カスタム分類法「season」を作成しました。この分類法を使用したい3つのカスタム投稿タイプがあります。これらは
さて、分類画面内で合計を見ると(つまり、wp-adminのURLには次のように表示されています。edit-tags.php?taxonomy = season&post_type = race)
合計には、このカテゴリに分類される「人種」の投稿数だけでなく、すべてのカスタム投稿にわたるこのカテゴリの投稿数の合計が表示されます。
どうしてこれなの?そして、このカスタム投稿タイプのみを表示するように分類法を取得するにはどうすればよいですか。
分類カウントがグローバルであるという事実(すべての投稿タイプを含む)について、現在 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_count」列にあることを確認し、それまでのカウント数を返します。これを行うにはカスタム関数が必要です。
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
を定義します。これは この回答から とされました。
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に用語をカウント順(投稿タイプ固有)にソートするよう指示する方法を検討する必要があるためです。