如果你开始使用manage_{post_type}_posts_columns这个钩子了,说明你的WordPress水平已经提升到一个不错的阶段,不在满足于主题的开发,而是开始研究后台的开发了。
这个钩子的主要作用是给我们的网站的文章添加一些新的字段名称,默认的字段名称如下图所示,包括标题、作者、分类目录等等,如果我们想要添加一个新的字段,就需要使用这个钩子了
和其他钩子的使用一样,我就直接展示代码了,如果是针对我们的文章进行字段的添加,钩子的名字就写用manage_posts_columns和manage_posts_custom_column就行。
如果需要重新排列字段的顺序,直接创建一个包含新顺序的数组即可,处理代码不变
在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="/uploads/img/<?php echo $array_image_url[0];?>">
<?php }else{
echo 'None';
}
break;
default:
break;
}
}
效果展示
add_action()参数中的10和2分别表示该函数执行的优先级是10(默认值,值越小优先级越高),该函数接受2个参数。