为什么我的自定义分类显示所有帖子类型的总计数

时间:2012-05-01 作者:Mazatec

我已经创建了一个自定义分类法“season”,我有3个自定义帖子类型,我想使用这个分类法。这些是

现在,当我在分类屏幕中查看总数时(即wp admin中的URL显示:edit tags.php?taxonomy=season&post\\u type=race)

总数显示了我所有自定义帖子中此类帖子的总数,而不仅仅是属于此类的“种族”帖子的数量。

为什么会这样?如何让分类法只显示这种自定义的帖子类型?

enter image description here

1 个回复
SO网友:Stephen Harris

当前有trac ticket 分类计数是全局的(包括所有帖子类型)。Related trac ticket.

要解决此问题,可以删除列并使用manage_edit-{$taxonomy}_columns 过滤器:

add_filter(\'manage_edit-season_columns\',\'my_season_columns\');
function my_season_columns($columns){
    unset($columns[\'posts\']);
    $columns[\'cpt_count\'] = \'Races\';

    return $columns;
}
然后告诉WordPress使用manage_{$taxonomy}_custom_column 滤器为此,请检查我们在“cpt\\U计数”列中,并返回计数。您需要一个自定义函数来执行此操作。

add_filter(\'manage_season_custom_column\',\'my_season_alter_count\',10,3);
function my_season_alter_count($value, $column_name, $id ){
    if( \'cpt_count\' == $column_name )
        return wpse50755_get_term_post_count_by_type($id,\'season\',\'race\');

    return $value;
}
最后,定义自定义函数wpse50755_get_term_post_count_by_type. 这是拍摄的from this answer.

function wpse50755_get_term_post_count_by_type($term,$taxonomy,$type){

  $args = array( 
    \'fields\' =>\'ids\',
    \'numberposts\' => -1,
    \'post_type\' => $type, 
     \'tax_query\' => array(
        array(
            \'taxonomy\' => \'event-category\',
            \'field\' => \'id\',
            \'terms\' => intval($term)
        )
      )
   );
   $ps = get_posts( $args );

   if (count($ps) > 0){
       return count($ps);
   }else{
       return 0;
   }
 }
这是未经测试的,但从概念上讲,它应该是可行的。

要使列可排序,您需要做更多的工作,因为您需要知道如何告诉WordPress按照count(特定于post类型)的顺序对术语进行排序。

结束

相关推荐