当前有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类型)的顺序对术语进行排序。