有时候为了管理文章的方便需要在wordpress后台的文章管理页面添加和删除一些列

需要用到的过滤器钩子

manage_post_posts_columns
manage_post_posts_custom_column

其中第一个钩子是返回文章列表的列名称和列值,第二个钩子是为新添加的列赋值。如果是删除默认列则不用使用。

现在为文章列表添加一个文章id和缩略图的列,删除一个显示评论数量的列。

在functions.php里添加如下代码


add_action('admin_init','recipe_admin_init');
function r_add_new_my_columns($columns)
{
    unset($columns['comments']); //删除默认列
    $new_columns = [];
    $new_columns['id'] = '文章id';
    $new_columns['thumbnail'] = '缩略图';
    $new_columns['post_status'] = '文章发布状态';
    return array_merge($columns, $new_columns);
}

function r_manage_my_columns($column, $post_id)
{
    switch ($column) {
        case 'id':
            echo $post_id;
            break;
        case 'thumbnail':
            if (has_post_thumbnail($post_id)) {
                $thumbnail_id =  get_post_thumbnail_id($post_id);
                $thumbnail_src = wp_get_attachment_image_src($thumbnail_id, 'full');
                // var_dump($thumbnail_src);  0 地址 宽度 高度 
                printf(
                    '<a target="_blank" href="%s"><img src="%s" height="30px"></a>',
                    $thumbnail_src[0],
                    $thumbnail_src[0],
                    $thumbnail_src[1],
                    $thumbnail_src[2]
                );
            } else {
                echo '无缩略图';
            }
            break;
        case 'post_status':
            $post = get_post($post_id);
            echo __($post->post_status);
            break;
        default:
            break;
    }
}
function recipe_admin_init(){
    //普通文章
    add_filter('manage_post_posts_columns','r_add_new_my_columns');
   add_filter('manage_post_posts_custom_column','r_manage_my_columns',10,2);
}

修改后的效果如下

删除默认列用unset($column[‘列名’]),默认的列名如下。

说明
cb <input type=”checkbox” />
title 标题
author 作者
categories 分类目录
tags 标签
comments 评论
date 文章发布日期