您的代码不能工作的原因是因为到了归档的时候。php运行时pre_get_posts
钩子已经开火了。
您可以在自己的功能中轻松完成任务。php文件:
add_action( \'pre_get_posts\', \'wpse_pre_get_posts\' );
function wpse_pre_get_posts( $query ) {
remove_action( \'pre_get_posts\', \'wpse_pre_get_posts\' );
//* $query->have_posts() will always return false from this hook
//* So get the posts with the query to check if they\'re empty
$posts = get_posts( $query->query );
if( empty( $posts ) && $query->is_main_query() ) {
$query->set( \'post_type\', \'article\' );
}
}
然后是你的档案。php将是一个简单的循环:
if( have_posts() ) :
while( have_posts() ) :
the_post();
the_title();
endwhile;
endif;
这将为每个请求运行两次查询,我不会这样做,但我无法立即找到其他方法来执行您想要的操作。
谢谢@Milo。已编辑,因为在pre\\u get\\u posts挂钩处,查询尚未运行。嗯。