如果你开始使用manage_{post_type}_posts_columns这个钩子了,说明你的WordPress水平已经提升到一个不错的阶段,不在满足于主题的开发,而是开始研究后台的开发了。

这个钩子的主要作用是给我们的网站的文章添加一些新的字段名称,默认的字段名称如下图所示,包括标题、作者、分类目录等等,如果我们想要添加一个新的字段,就需要使用这个钩子了

和其他钩子的使用一样,我就直接展示代码了,如果是针对我们的文章进行字段的添加,钩子的名字就写用manage_posts_columns和manage_posts_custom_column就行。

如果需要重新排列字段的顺序,直接创建一个包含新顺序的数组即可,处理代码不变

  1. cb – 复选框
  2. title – 文章标题
  3. author – 文章作者
  4. categories – 文章的分类
  5. tags – 文章的标签
  6. comments – 文章的评论
  7. date – 文章发布的日期
  8. subtitle – 文章副标题
  9. 其他自定义

在functions.php添加下面代码

add_filter('manage_posts_columns', 'add_posts_columns');
function add_posts_columns() {
    $new_columns['cb'] = '<input type="checkbox" />';
    $new_columns['title'] = _x( 'Title', 'column name' );
    $new_columns['author'] = __('Author');
    $new_columns['categories'] = __('Categories');
    $new_columns['tags'] = __('Tags');
    $new_columns['id'] = __('ID');
    $new_columns['date'] = _x('Date', 'column name');
    return $new_columns;
}

add_action('manage_posts_custom_column', 'manage_posts_columns', 10, 2);
function manage_posts_columns($column_name, $id) {
    switch ($column_name) {
        case 'id':
            echo $id;
            break;
        default:
            break;
    }
}

效果展示

如果我们想为自定义的post type添加字段功能就需要使用这两种钩子manage_{post_type}_posts_columns和 manage_{post_type}_posts_custom_column

只需要把{post_type}换成你的Post type的名称,比如我们注册一个product的形式,则代码如下

add_filter('manage_product_posts_columns', 'add_new_posts_columns');
function add_new_posts_columns() {
    $new_columns['cb'] = '<input type="checkbox" />';
    $new_columns['title'] = _x( 'Title', 'column name' );
    $new_columns['author'] = __('Author');
    $new_columns['categories'] = __('Categories');
    $new_columns['tags'] = __('Tags');
    $new_columns['id'] = __('ID');
    $new_columns['date'] = _x('Date', 'column name');
    $new_columns['thumbnail'] = _x('Thumbnail');
    return $new_columns;
}
add_action('manage_product_posts_custom_column', 'manage_product_posts_columns', 10, 2);
function manage_product_posts_columns($column_name, $id) {
    global $wpdb;
    global $post;
    switch ($column_name) {
        case 'id':
            echo $id;
            break;
        case 'categories':
            single_cat_title();
            break;
        case 'thumbnail':
            if (has_post_thumbnail()){
                $array_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), array(75,60)); ?>
            <img width="75" height="60" src="<?php echo $array_image_url[0];?>">
            <?php }else{
                echo 'None';
            }
            break;
        default:
            break;
    }
}

效果展示

add_action()参数中的10和2分别表示该函数执行的优先级是10(默认值,值越小优先级越高),该函数接受2个参数。