将列添加到 WordPress 管理员仅用于帖子,而不是自定义帖子类型

dan*_*nzo 2 php wordpress custom-post-type

我已经向我的 WP 站点添加了一些代码,用于计算帖子被查看的次数。然后我在管理员中添加了一个列来显示帖子收到了多少浏览量。这是标准的 WP 博客文章:

// SHOW POST VIEWS COLUMN IN ADMIN...
add_filter('manage_posts_columns', 'posts_column_views');
add_action('manage_posts_custom_column', 
'posts_custom_column_views',5,2);
function posts_column_views($defaults){

$defaults['post_views'] = __('Views');
return $defaults;
}
function posts_custom_column_views($column_name, $id){

if($column_name === 'post_views'){
    echo my_get_post_views(get_the_ID());
    }
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但问题是现在这个新列也显示在所有自定义帖子类型中。我写了一些代码来从自定义帖子类型(见下文)中取消它,这很好用。

// BUT DON'T SHOW IT ON CUSTOM POST TYPES
function jxb_manage_columns( $columns ) {
  unset($columns['post_views']);
  return $columns;
}

function jxb_column_init() {
  add_filter( 'manage_jxb-component_posts_columns' , 'jxb_manage_columns' );
  add_filter( 'manage_faqs_posts_columns' , 'jxb_manage_columns' );
  add_filter( 'manage_edr-component_posts_columns' , 'jxb_manage_columns' );
  add_filter( 'manage_new-stories_posts_columns' , 'jxb_manage_columns' );
  add_filter( 'manage_loc_posts_columns' , 'jxb_manage_columns' );
  add_filter( 'manage_upcoming-event_posts_columns' , 'jxb_manage_columns' );
  add_filter( 'manage_product-return_posts_columns' , 'jxb_manage_columns' );
  add_filter( 'manage_splash-page_posts_columns' , 'jxb_manage_columns' );
}
add_action( 'admin_init' , 'jxb_column_init' );
Run Code Online (Sandbox Code Playgroud)

只是想知道是否有更有效的方法来执行此操作,而不是单独从每个自定义帖子类型中取消设置列。谢谢!

cai*_*isk 5

通过 WordPress codex 文档,您可以在过滤器上设置帖子类型名称manage_{$post_type}_posts_columns请参阅 CODEX

因此,您可以设置post(实际上是帖子类型),{$post_type}然后将过滤器限制为post帖子类型,因此:

add_filter('manage_post_posts_columns', 'posts_column_views');
add_action('manage_post_posts_custom_column', 'posts_custom_column_views',5,2);
Run Code Online (Sandbox Code Playgroud)

  • 杰出的!我认为“帖子”是指帖子作为默认帖子类型。不知道我可以把它当作任何其他帖子类型。谢谢! (2认同)