WordPress教程
模板兔提供专业的wordpress建站教程、wordpress主题开发教程、wordpress插件开发教程、wordpress二次开发教程等。
WordPress教程:模板兔开发的主题里基本都有微博登录,而这个功能里需要模拟post提交来获取用户权限,奇怪的是前几天给客户迁移了服务器后以前的代码(使用的curl)就无法获取用户权限了,检查了服务器函数是支持此函数的,后来换了file_get_contents后才解决。
下面的两种方法,$url是链接,$data是传入参数(格式:"meta_one=1&meta_two=2")。
curl方法:
function do_post($url, $data) {
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, TRUE );
curl_setopt ( $ch, CURLOPT_POST, TRUE );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLO...
WordPress教程:一直都有用户反馈,WordPress默认的找回密码功能总是提示“抱歉,该key似乎无效”,其实问题是邮件里重置链接的最后面多出了一个 > 符号。修复办法如下
在当前主题的 functions.php 添加下面的代码即可:
function MBT_reset_password_message( $message, $key ) {
if ( strpos($_POST['user_login'], '@') ) {
$user_data = get_user_by('email', trim($_POST['user_login']));
} else {
$login = trim($_POST['user_login']);
$user_data = get_user_by('login', $login);
}
$user_login = $user_data->user_login;
$msg = __('有人要求重设如下帐号的密码:'). "\r\n\r\n";
$msg .= network_site_url() . "\r\n\...
WordPress教程:最近有人使用Monkey主题出现文章内的图片很小,明明上传的是大图,却显示的小图,原来从WordPress 4.4开始,系统将可以根据不同的条件(屏幕大小、可视区大小 和 屏幕分辨率等)为用户显示不同大小的图片,详见。查看源码会看到img标签里出现 sizes="(min-width: {img.width}px) {img.width}px, 100vw" 这样的代码。
这个是默认开启的功能,好像对于我们来说不是很需要,你可以添加下面的代码到当前主题的 functions.php 文件即可关闭此功能:
/**
* 禁用 WordPress 4.4+ 的响应式图片功能
*/
add_filter( 'max_srcset_image_width', create_function( '', 'return 1;' ) );
如果你不想编辑文件,可以下载安装 Disable Responsive...
WordPress教程:最近wordpress官方发布了wordpress 4.4版,其中新增的特性就是给分类法新增自定义字段函数:add_term_meta() , get_term_meta() , update_term_meta() , delete_term_meta() 。
正好在给客户开发一款主题,其中要用到筛选分类(不是通过分类筛选文章,而是通过分类自定义字段筛选分类),类似于将分类来归类吧~~要用到get_terms函数里的meta_query
代码:
get_terms( 'category', array('hide_empty' => true, 'parent' => '0','child_of'=> 0, 'meta_query'=>array(array('key'=>'coursecat','value'=>$courseCat->term_id)) ) );
具体怎么给分类新增自定义字段,可以看看这篇文章。
www.smashingmagazine.c...
WordPress教程:由于模板兔开发的一些主题首页多数是有焦点图的,这些焦点图的来源就是顶置文章,那么有些用户需要在顶置文章下面的最新文章列表里不显示顶置文章,这里给出代码:
$sticky = get_option( 'sticky_posts' );
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'caller_get_posts' => 1,
'post__not_in' => $sticky,
'paged' => $paged
);
query_posts($args);
get_template_part( 'content', get_post_format() );
将以上代码替换主题目录里的index.php里的相关代码即可
不过,使用此代码后,模板兔建议顶置文章数量尽量保持焦点图显示的数量,比如4个,如果你一直顶置新的文章...
WordPress教程:有时候我们需要给菜单添加额外的class类来标记某个menu item,比如出现多级分类时,要显示出层级关系,我们可以把active的item统一绑定一个cur的class。
将以下代码添加至主题functions.php里:
function MBT_special_nav_class($classes, $item){
if( in_array('current-menu-item', $classes) || in_array('current-menu-ancestor', $classes) || in_array('current-post-parent', $classes) || in_array('current-post-ancestor', $classes)){
$classes[] = 'cur ';
}
return $classes;
}
add_filter('nav_menu_css_class' , 'MBT_special_nav_class' , 10 , 2);
WordPress教程:wordpress 4.2新增了emoji表情,导致之前自定义的表情无法显示。
add_filter('smilies_src','custom_smilies_src',1,10);
function custom_smilies_src ($img_src, $img, $siteurl){
return get_bloginfo('template_url').'/static/img/smilies/'.$img;
}
function mbtheme_init_smilies(){
global $wpsmiliestrans;
$wpsmiliestrans = array(
':mrgreen:' => 'icon_mrgreen.gif',
':neutral:' => 'icon_neutral.gif',
':twisted:' => 'icon_twisted.gif',
':arrow:' => 'icon_arrow.gif',
':shock:' => 'icon_eek.gif',
':smile:' => 'icon_smile.gif',
':???:' => 'icon_confused.gif',
':c...
WordPress教程:开发模板的过程中,难免会需要添加自定义文章类型,但是默认的链接结构都是类似forum/标题 这种结构,可能对搜索引擎不友好,所以我们需要做些修改,下面有两种方法。将代码贴进主题的functions.php里,然后更新下固定链接即可!
方法一:
add_filter('post_type_link', 'custom_blog_link', 1, 3);
function custom_blog_link( $link, $post = 0 ){
if ( $post->post_type == 'blog' ){
return home_url( 'blog/' . $post->ID .'.html' );
} else {
return $link;
}
}
add_action( 'init', 'custom_blog_rewrites_init' );
function custom_blog_rewrites_init(){
add_rewrite_rule(
'blog/([0-9]+)?.html$',
...
WordPress教程:默认调用:
<?php previous_post_link('上一篇: %link') ?>
<?php next_post_link('下一篇: %link') ?>
当文章处于首篇或末篇时,会显示空白,但可以通过增加判断还填补空白:
<?php if (get_previous_post()) { previous_post_link('上一篇: %link');} else {echo "已是最后文章";} ?>
<?php if (get_next_post()) { next_post_link('下一篇: %link');} else {echo "已是最新文章";} ?>
经过测试虽然显示同分类下的文章,但首篇文章和末尾的文章会不显示对应的提示信息“已是最后文章”和“已是最后文章”。只要在get_previous_post()函数中指定一下文章所属分类ID便能使代码完全有效。
<?php
$categ...
WordPress教程:比如要在后台文章列表里显示文章点击量,将下面的代码添加到主题的functions.php中即可:
add_action('manage_posts_custom_column', 'add_postviews_column_content');
add_filter('manage_posts_columns', 'add_postviews_column');
add_action('manage_pages_custom_column', 'add_postviews_column_content');
add_filter('manage_pages_columns', 'add_postviews_column');
function add_postviews_column($defaults) {
$defaults['views'] = '点击量';
return $defaults;
}
function add_postviews_column_content($column_name) {
if($column_name == 'views') {
if(function_exists('MBT_views')) { MBT_views(...
WordPress教程:模板兔开发的部分主题里会有前端头像上传的功能,那么怎么才能让头像同步后台与前端呢?我们这里去除默认的头像,用固定的某张图片代替,大大加快加载速度。
代码如下:
add_filter('get_avatar', 'MBT_get_avatar', 10, 3);
function MBT_get_avatar($avatar, $id_or_email, $size){
$default_avatar = get_bloginfo('template_url').'/img/avatar.png'; //默认头像
if(is_object($id_or_email)) {
if($id_or_email->user_id != 0) {
$email = $id_or_email->user_id;
$user = get_user_by('email',$email);
$user_avatar = get_user_meta($id_or_email->user_id, 'avatar', true);
if($user_avatar)
return '...
WordPress教程:有时候我们需要在菜单里加入额外的一些元素,可以用Walker_Nav_Menu类来完成。
class description_walker extends Walker_Nav_Menu {
function start_el(&$output, $item, $depth, $args) {
global $wp_query;
global $wpdb;
$indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
$class_names = $value = '';
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
$classes[] = 'menu-item-' . $item->ID;
$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args ) );
$class_names = ' class="' . esc_attr( $class_n...
WordPress教程:在多人共用一个帐号的情况下,有这样一种需求,我不需要知道WordPress的用户名和密码,就能自动登录到公共帐号。这样的需要该如何实现呢?
方法一:wp_signon()
在主题中使用WordPress内置函数 wp_signon() ,可将用户名和密码直接放到代码中,无需再去要求用户输入,快捷登录,省时省力:
if (!is_user_logged_in()) {
$creds = array();
$creds['user_login'] = 'mobantu'; // 用户名是mobantu,自行修改
$creds['user_password'] = 'mobantu'; // 密码是mobantu
$creds['remember'] = true; $user = wp_signon( $creds, false ); if ( is_wp_error($user) ) echo $user->get_error_message();
}
将以上代码应用到你的Wo...
WordPress教程:最近给客户加了个论坛功能,需要帖子顶置功能,可是又不想某版块下的顶置贴显示在论坛首页,所以得在首页排除掉某版块的顶置贴,大致代码如下:
$sticky = get_option('sticky_posts'); rsort( $sticky );
$sticky_args = array('post__in' => $sticky, 'caller_get_posts' => 1, 'showposts' => 10, 'post_type' => 'thread',
'tax_query' => array(
array(
'taxonomy' => 'forum',
'terms' => array('145','146','147','148','149','150'),
'field' => 'id',
'operator' => 'NOT IN'
)
)
);
$sticky_arms = array_merge($sticky_args, $wp_query->query);
query_posts($sticky_arms...
WordPress教程:有时候是不会注意到有日志需要审核的,所以最好的办法就是在 WordPress 后台的首页(就是仪表盘)直接显示待审日志列表。
add_action('wp_dashboard_setup', 'MBT_thread_modify_dashboard_widgets' );
function MBT_thread_modify_dashboard_widgets() {
global $wp_meta_boxes;
if(current_user_can('manage_options')){ //只有管理员才能看到
add_meta_box( 'pending_posts_dashboard_widget', '待审文章', 'pending_posts_dashboard_widget_function','dashboard', 'normal', 'core' );
}
}
function pending_posts_dashboard_widget_function() {
global $wpdb;
$pending_posts = $wpdb->get_results("SELECT * FROM {...