WordPress教程

模板兔提供wordpress建站教程、wordpress主题开发教程、wordpress插件开发教程、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 '...

有时候我们需要在菜单里加入额外的一些元素,可以用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的用户名和密码,就能自动登录到公共帐号。这样的需要该如何实现呢? 方法一: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...

最近给客户加了个论坛功能,需要帖子顶置功能,可是又不想某版块下的顶置贴显示在论坛首页,所以得在首页排除掉某版块的顶置贴,大致代码如下: $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 后台的首页(就是仪表盘)直接显示待审日志列表。 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默认的只有编辑权限才能在前端上传,但是一般默认的用户权限是订阅者或者投稿者,所以得改改他们的权限,代码如下: 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');

有时候我们遇到文章多字段多重排序,或者说一个字段排序同时又得判断是否含有另一个字段或另一个字段值等于某个值,看以下代码: <?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...

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

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字符串需要一致!

wordpress在默认情况下可以使用文章的一个自定义字段进行排序,代码如下: $args = array( 'meta_key' => 'sort', 'orderby' => 'meta_value_num', // 须 WordPress 2.8 及以上版本 'order' => DESC ); $arms = array_merge($args, $wp_query->query); query_posts($arms); while (have_posts()) //循环内容 endwhile;wp_reset_query(); 但是有时候我们可能会碰到更加复杂的情况,需要对两个自定义字段进行组合排序,方法如下: $query = "SELECT wposts.*, wpostmeta1.*, wpostmeta2.* FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta1, $wpdb->postmeta wpostmeta2 WHERE wposts....

if( !class_exists('CustomPostTypeArchiveInNavMenu') ) { class CustomPostTypeArchiveInNavMenu { function CustomPostTypeArchiveInNavMenu() { add_action( 'admin_head-nav-menus.php', array( &$this, 'cpt_navmenu_metabox' ) ); add_filter( 'wp_get_nav_menu_items', array( &$this,'cpt_archive_menu_filter'), 10, 3 ); } function cpt_navmenu_metabox() { add_meta_box( 'add-cpt', __('自定义文章类型存档'), array( &$this, 'cpt_navmenu_metabox_content' ), 'nav-menus', 'side', 'default' ); } function cpt_navmenu_metabox_content() { $post_types = get_post_types( array( 'show_in...

有时候,我们需要通过分类的序号来排序分类列表,wordpress的分类有个term_order属性,默认为0。 <?php function mbt_add_category_field(){ echo '<div class="form-field"> <label for="cat-num">序号</label> <input name="_term_order" id="cat-num" type="text" value="" size="40"> <p>专题列表排序,数字越好,越靠前</p> </div>'; } add_action('category_add_form_fields','mbt_add_category_field',10,2); // 分类编辑字段 function mbt_edit_category_field($tag){ echo '<tr class="form-field"> <th scope="row"><label for="c...

有时候,我们需要显示指定文章ID数组的文章列表,那么看看下面代码,可能会帮助到你: 方法一: <?php $ids = array(548,555,587,583,585); $my_query = query_posts(array('post__in' => $ids,'post_type'=> 'parks')); global $post; foreach ($my_query as $post) { $posts_by_id[$post->ID] = $post; } foreach ($ids as $id) { if (!$post = $posts_by_id[$id]) continue; setup_postdata($post); echo '<p>TITLE: ';the_title();echo ' - ';the_ID(); '</p>'; the_content(); } ?> 方法二:(如果需要分页) <?php global $wp_query; $args = array_merge( $wp_query->q...

/* 评论作者和谐,使昵称部分隐藏,例如:ad**n 。*/ function cut_str($string, $sublen, $start = 0, $code = 'UTF-8') { if($code == 'UTF-8') { $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/"; preg_match_all($pa, $string, $t_string); if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen)); return join('', array_slice($t_string[0], $start, $sublen)); } else { $start = $start*2; $sublen ...

有时候我们需要在列表里显示某个自定义字段不为空的文章,比如用woocommerce插件时,只显示on sale的产品,那么代码如下: $args = array( 'post_type' => 'product', 'meta_query' => array( array( 'key' => '_sale_price', //自定义字段 'value'=> '', 'compare' => '!=' ) ) ); //另一种形式 array( 'prdctfltr' => 'active', 'post_type' => 'product', 'post_status' => 'publish', 'posts_per_page' => $prdctfltr_global['posts_per_page'], 'meta_query' => array( array( 'key' => '_visibility', 'value' => array('catalog', 'visible'), 'compare...