所以我得到了一个相当简单的设置,一个CPT,默认值为category
和post_tag
作为分类法。
假设我有一个帖子和一个CPT条目分配给同一个类别。我需要这也反映在类别小部件中。
我已经通过request
过滤以使小部件生成的链接正常工作。
问题是,如果帖子不存在,小部件将不会为该类别生成链接(考虑为空)。
此外,项目计数不正确,1而不是2。
仔细查看小部件代码,这就是导致问题的原因:
wp_list_categories(apply_filters(\'widget_categories_args\', $cat_args));
所以我可以通过过滤器改变参数,但是wp_list_categories()
没有关于应该使用何种post类型的参数。我以前见过其他人遇到过这个问题:
http://wordpress.org/support/topic/custom-post-types-and-category-widget - 没有运气http://themehybrid.com/support/topic/custom-post-types-and-category-widget - 同一个家伙,看不懂贾斯汀的回答,但我想不会再有运气了。他在最后提交了一张罚单,结果被关闭了
对解决方案的思考我真的不想复制/粘贴默认的小部件代码并创建一个新代码,而是想通过某种方式使用过滤器来解决这个问题。
也就是说,一个定制的步行者能帮上忙吗?有什么想法吗?
作为旁注,我使用以下方法解决了存档小部件的类似问题:
/*
* Add CPTs to wp_get_archives()
* http://bajada.net/2010/07/15/adding-custom-post-types-to-wp_get_archives
*/
function ucc_getarchives_where_filter( $where , $r ) {
$args = array( \'public\' => true , \'_builtin\' => false );
$output = \'names\'; $operator = \'and\';
$post_types = get_post_types( $args , $output , $operator );
$post_types = array_merge( $post_types , array( \'post\' ) ); $post_types = "\'" . implode( "\' , \'" , $post_types ) . "\'";
return str_replace( "post_type = \'post\'" , "post_type IN ( $post_types )" , $where );
}
add_filter( \'getarchives_where\' , \'ucc_getarchives_where_filter\' , 10 , 2 );
干杯!