WordPress教程

模板兔提供专业的wordpress建站教程、wordpress主题开发教程、wordpress插件开发教程、wordpress二次开发教程等。

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 {...

WordPress教程:有时候我们需要网站前端让用户上传图片,可是wordpress默认的只有编辑权限才能在前端上传,但是一般默认的用户权限是订阅者或者投稿者,所以得改改他们的权限,代码如下: function MBT_enable_file_uploads_by_role( ) { $role = 'subscriber';//这是角色 if(!current_user_can($role) || current_user_can('upload_files')) return; $contributor = get_role( $role ); $contributor->add_cap('upload_files'); } add_action('admin_init', 'MBT_enable_file_uploads_by_role');

WordPress教程:有时候我们遇到文章多字段多重排序,或者说一个字段排序同时又得判断是否含有另一个字段或另一个字段值等于某个值,看以下代码: <?php //多个字段多重排序 $args = array( 'post_type' => 'words', 'meta_query' => array( array( 'key' => 'word_count', 'orderby' => 'meta_value_num', 'order' => DESC , ), array( 'key' => 'title', 'orderby' => 'meta_value', 'order' => DESC ), arr...

WordPress教程:$post = array( 'comment_status' => 'closed', 'ping_status' => 'closed', 'post_author' => 2, 'post_content' => $_POST['synopsis'], 'post_name' => sanitize_title($_POST['title']), 'post_status' => 'private', 'post_title' => $_POST['title'], 'post_type' => 'film', 'tax_input' => array( 'film_category' => array( $_POST['category'] ) ) ); $new_film_id = wp_insert_p...

WordPress教程:js代码例如: <script> jQuery(document).ready(function(){ jQuery("#viptable .quxiaovip").click(function(){ jQuery.ajax({ url: '<?php echo admin_url( 'admin-ajax.php' );?>', type: "POST", data: { action:"quxiaovip", id:jQuery(this).data("id"), }, success: function(data) { alert(data); location.reload(true); } }); }); }); </script> php代码例如: function quxiaovip_callback(){ // do something echo 'mobantu'; } add_action( 'wp_ajax_quxiaovip', 'quxiaovip_callback'); 注意以上quxiaovip字符串需要一致!