我已经使用此功能更改了类别页面上每页的帖子数量,但我无法让它在sub-类别页面。
我试图在子类别页面上显示6篇文章,在父类别页面上显示12篇文章。
function my_post_queries( $query ) {
if (!is_admin() && $query->is_main_query()){
if(cat_is_ancestor_of( 7, get_query_var( \'cat\' ) ) ){
$query->set(\'posts_per_page\', 6);
}
if(is_category( \'7\' )){
$query->set(\'posts_per_page\', 12);
}
}
}
add_action( \'pre_get_posts\', \'my_post_queries\' );
当我在存档页面上使用cat\\u is\\u祖先\\u来更改子类别页面的布局时,它可以工作,但当我在该功能中使用它时,它就不能工作了。
最合适的回答,由SO网友:CK MacLeod 整理而成
好吧,那么这个怎么样?(Changed from first try - now tested.)
function my_post_queries( $query ) {
if ( ! is_admin() && $query->is_main_query() ) {
if ( is_category( 7 ) ) {
$query->set( \'posts_per_page\', 6 );
}
//works with pretty permalinks
$cat_id = get_queried_object()->term_id;
if ( cat_is_ancestor_of( 7, $cat_id ) ) {
$query->set( \'posts_per_page\', 12 );
}
}
}
注:仍不确定包含的目的或效果
return ;
\'s、 对功能没有明显的影响,所以将其排除在外。
SO网友:CK MacLeod
您的代码和the similar code in the Codex - 使用“返回”在每个“集合”之后因此,使您的代码符合示例如下所示:
function my_post_queries( $query ) {
if ( ! is_admin() && $query->is_main_query() ) {
if( cat_is_ancestor_of( 7, get_query_var( \'cat\' ) ) ) {
//drumroll
$query->set(\'posts_per_page\', 6);
//ta-da!
return;
}
if( is_category( 7 ) ) {
$query->set(\'posts_per_page\', 12);
//encore!
return;
}
}
}
add_action( \'pre_get_posts\', \'my_post_queries\' );
未测试。我希望我能权威地向你解释什么是“回报”在这里。在进行研究冒险之前,我想知道它是否能为你解决问题。