在讨论您的问题之前,我想首先问一下,为什么要在类别页面上使用自定义查询而不是主查询。绝不应在任何存档页或主页上更改自定义查询的主查询。
Wordpress提供了一个动作挂钩,pre_get_posts
您可以将其与conditional tags 在特定页面上执行主查询之前,将其作为目标并进行修改。对于类别页面is_category()
提供条件检查。
您只需在函数中执行以下操作即可。php,同时在类别页面上保持默认循环。只是一个提示,pre_get_posts
使用与相同的参数WP_Query
function add_news_to_category( $query ) {
if ( !is_admin && $query->is_category() && $query->is_main_query() ) {
$query->set( \'post_type\', array( \'news\' ) );
$query->set( \'posts_per_page\', \'9\' );
$query->set( \'orderby\', \'date\' );
}
}
add_action( \'pre_get_posts\', \'add_news_to_category\' );
好的,现在来看看您的代码的实际问题。
首先,您不需要使用wp_reset_query
和wp_reset_postdata
在一起wp_reset_query
实际上与一起使用query_posts
, 你绝对不能用,我的意思是永远不要。只是简单地使用wp_reset_postdata after
WP\\U查询and
get\\u posts`,记住,永远不要忘记这样做
其次,仔细查看您的代码。你有$query = new WP_Query( $args_news );
, 但是你有<?php next_posts_link( \'Older Posts\', $custom_query->max_num_pages ); ?>
. 找出差异?$query
和$custom_query
. 所以<?php next_posts_link( \'Older Posts\', $custom_query->max_num_pages ); ?>
应该是<?php next_posts_link( \'Older Posts\', $query->max_num_pages ); ?>
进一步阅读: