WordPress教程
模板兔提供专业的wordpress建站教程、wordpress主题开发教程、wordpress插件开发教程、wordpress二次开发教程等。
WordPress教程:很多用户使用的虚拟主机都禁用了mail函数以至于网站无法发邮件(注册用户、找回密码等一些操作都需要发送邮件),虽然有很多SMTP插件可以解决此问题,但是,模板兔的原则是,能不用插件就坚决不用插件,特比是一些小功能,也没必要使用插件。
将以下代码插入到主题的functions.php里:
//使用smtp发邮件
function MBT_mail_smtp( $phpmailer ) {
$phpmailer->IsSMTP();
$phpmailer->SMTPAuth = true;//启用SMTPAuth服务
$phpmailer->Port = 465;//MTP邮件发送端口,这个和下面的对应,如果这里填写25,则下面为空白
$phpmailer->SMTPSecure ="ssl";//是否验证 ssl,这个和上面的对应,如果不填写,则上面的端口须为2...
WordPress教程:有时候会发现wordperss后台越来越卡,是什么原因呢?原因可能很多,但是一些更新的获取可能是其中之一。那么可以按需关系这些更新。
将以下代码加入主题的functions.php里(最后一个 ?> 之前):
class OS_Disable_WordPress_Updates {
private $__pluginsFiles;
private $__themeFiles;
/**
* The OS_Disable_WordPress_Updates class constructor
* initializing required stuff for the plugin
*
* PHP 5 Constructor
*
* @since 1.3
* @author scripts@schloebe.de
*/
function __construct() {
$this->__pluginsFiles = array();
$this->__themeFiles = array();
add_action( 'admin_ini...
WordPress教程:最近给某个客户二次开发时有这样一个需求,客户使用的wp插件wp user frontend pro来实现前端投稿,可是这个插件的pro版在文章正文上传图片时调用的不是系统自带的媒体库上传按钮,而是单独弄的一个上传控件,这对于处女座的人来说无疑是一个不可接受的用户体验。
也有人向插件作者提出这个问题,作者的回复是:(看不懂的用户请自行Google翻译)
“As people use the plugin for public post submission, most of them didn’t wanted to expose others uploaded image to other users. Thats why it’s removed and replaced with a plugin native media uploader.”
意思就是说他不想让用户看到所有的媒体文件!!!
难道他不知道wordpr...
WordPress教程:有时候我们开放用户自己发布文章的权限,但是又不想让媒体库里的所有图片/文件让作者及其以下角色权限的用户看到,怎么办呢?要解决这个问题,将下面的代码添加到当前主题的 functions.php 文件中:
add_action('pre_get_posts','MBT_restrict_media_library');
function MBT_restrict_media_library( $wp_query_obj ) {
global $current_user, $pagenow;
if( !is_a( $current_user, 'WP_User') )
return;
if( 'admin-ajax.php' != $pagenow || $_REQUEST['action'] != 'query-attachments' )
return;
if( !current_user_can('manage_media_library') )
$wp_query_obj->set('au...
WordPress教程:这款插件功能很强大:
1.wordpress 分类目录 转换为 子域名 (绑定二级域名)形式
2.wordpress 页面转换为 子域名 (绑定二级域名) 形式
3.wordpress 作者页转换为 子域名 (绑定二级域名)形式
4.为不同子域名 (绑定二级域名) 选用不同的 wordpress 主题
下面详细介绍 给 WordPress 分类目录 绑定 二级域名 的方法:
需要将*.domain.com A记录指向你的服务器IP,然后服务器需要绑定*.domain.com
WP Subdomains插件设置
(1)Wordpress 分类目录 子域名 url (绑定二级域名)可以直接在 WP Subdomains插件 设置界面完成
(2)对于Wordpress页面来说需要在页面编辑是添加 wps_page_subdomain 的自定义字段,赋值为true。...
WordPress教程:有时候网站后台发布文章时莫名其妙的有些按钮点击失效了,例如编辑器下滑时无法固定,编辑可视化/文本模式无法切换等等,导致这些bug的原因在于更新了系统却没有更新语言包。
解决方案:
将wp-content目录下的languages文件夹删除,然后进后台的 仪表盘-更新(Dushboard-Updates) (后台路径是http://你的域名/wp-admin/update-core.php)页面点击下面的update translations按钮,看到语言包更新完毕后即可。
WordPress教程:wordpress默认搜索是搜索文章标题以及检索文章内容里的关键字,但是对于一些电商网站来说,搜索产品编号也是很重要的一部分,但是产品编号一般是一个自定义字段,无法被搜索到,这时该怎么办呢?
接下来让模板兔给出解决方案:
首先,让系统的搜索能搜索到postmeta数据表:
function MBT_search_join( $join ) {
global $wpdb;
if ( is_search() ) {
$join .=' LEFT JOIN '.$wpdb->postmeta. ' ON '. $wpdb->posts . '.ID = ' . $wpdb->postmeta
. '.post_id ';
}
return $join;
}
add_filter('posts_join', 'MBT_search_join' );
然后在模糊查询里加入查询字段:
function MBT_search_where( $where ) {...
WordPress教程:最近,有个用户找模板兔迁移网站,源站用的dede,需要转成wp,文章数量大概7000-8000篇,其中有个需求是保证旧文章的链接有效,在wp上的新文章与旧文章的链接类型不一样,所以这涉及到伪静态来处理跳转。虽然网上都很多教程,但是在这次导入过程中还是遇到过一些问题。
以下教程是dede的数据表得与wp的数据表在同一个数据库下!要是不在,可以将dede_archives先导入到wp的数据库里。
一般流程
1. 文章标题等基本数据导入
织梦的文章标题、正文和栏目分别存放在三个不同的表上,但WordPress把文章标题和正文放在一个表上,栏目放在另外一个表上。
为了简化后面的工作,第一步我首先把织梦的全站RSS文件(rss.php)保存下来,然后使...
WordPress教程:有网友询问,如何在文章编辑的“添加媒体”中只显示上传到本文章的文件,因为默认会显示所有文件,如果文件很多,加载起来非常慢,还会出现假死现象。要解决这个问题,将下面的代码添加到当前主题的 functions.php 文件中:
add_action( 'wp_footer', 'mobantu_mediapanel_lock_uploaded' );//让前台编辑器也生效
add_action( 'admin_footer-post-new.php', 'mobantu_mediapanel_lock_uploaded' );
add_action( 'admin_footer-post.php', 'mobantu_mediapanel_lock_uploaded' );
function mobantu_mediapanel_lock_uploaded() { ?>
<script type="text/javascript">
jQuery(document).on("DOMNodeInserted", function(){
...
WordPress教程:最近模板兔给某个客户定制一个关于数据下载的wordpress模板,需要使用erphpdown收费下载插件,其中要实现这样一个页面:多字段筛选。
效果如下:(这里只列出3项自定义字段)
筛选界面代码如下:
<div class="filters">
<div class="filter-item">
数据标价:<a href="<?php echo add_query_arg("price","all",selfURL())?>" class="<?php if(!isset($_GET['price']) || $_GET['price'] == 'all') echo 'on';?>">全部</a> <a href="<?php echo add_query_arg("price","free",selfURL())?>" class="<?php if($_GET['price'] == 'free') echo 'on';?>">免费</a> &l...
WordPress教程:模板兔在给客户定制开发主题的过程中遇到一个需求就是需要不同分类下的文章显示出不同的效果,如果通过single.php来做判断可能显得文件代码很繁琐,所以这里可以根据分类来选择显示single的文件。将以下代码加到主题的functions.php 里
//定义模板文件所在目录为 single 文件夹
define(SINGLE_PATH, TEMPLATEPATH . '/single');
//自动选择模板的函数
function mobantu_single_template($single) {
global $wp_query, $post;
//通过分类别名或ID选择模板文件
foreach((array)get_the_category() as $cat) :
if(file_exists(SINGLE_PATH . '/single-cat-' . $cat->slug . '.php'))
return SINGLE_PATH . '/single-cat-' . ...
WordPress教程:WordPress 4.4以后的版本对中文用户名不友好,所以我借鉴了wp-includes/formatting.php中sanitize_user函数的写法,将以下php代码复制到当前主题目录下的functions.php中,即可让WordPress支持使用中文用户名注册和登录:
function mobantu_sanitize_user ($username, $raw_username, $strict) {
$username = wp_strip_all_tags( $raw_username );
$username = remove_accents( $username );
// Kill octets
$username = preg_replace( '|%([a-fA-F0-9][a-fA-F0-9])|', '', $username );
$username = preg_replace( '/&.+?;/', '', $username ); // Kill entities
// 网上很多教程都是直接将$strict赋值false,
// 这样会...
WordPress教程:有时候我们需要给主题添加一个作者列表页面,希望显示角色为作者、编辑等的用户。wordpress 4.4 版本起,WP_User_Query 支持 role__in 与 role__not_in 属性 。
使用以下代码:
$blogusers = get_users([ 'role__in' => [ 'administrator', 'editor', 'author' ] ]);
foreach ( $blogusers as $user ) {
//你的代码
}
WordPress教程:有些用户遇到了一个很奇怪的问题,明明在内容里插入了视频,可以发布后视频却不见了!好吧,其实这是角色权限的问题,你用管理员角色试试,肯定可以插入,但是其他角色就说不准了。
在主题的functions.php里加入以下代码:
//by mobantu 让作者可以插入视频
$role2 = get_role( 'author' ); //作者角色
$role2->add_cap( 'unfiltered_html' );
WordPress教程:有时候我们给用户后台发布的权限,可是不想让用户看到所有的媒体库,可以使用View Own Posts Media Only插件,也可以在当前主题的 functions.php 文件添加下面的代码:
//在文章编辑页面的[添加媒体]只显示用户自己上传的文件
function MBT_my_upload_media( $wp_query_obj ) {
global $current_user, $pagenow;
if( !is_a( $current_user, 'WP_User') )
return;
if( 'admin-ajax.php' != $pagenow || $_REQUEST['action'] != 'query-attachments' )
return;
if( !current_user_can( 'manage_options' ) && !current_user_can('manage_media_library') )
$wp_query_obj->set('author', $current_user->ID );
...