我想在搜索结果、类别等中显示未来的帖子。
This site 表示使用以下代码:
$args = array(
\'post_status\' => array(\'publish\', \'future\'),
);
query_posts( $args );
但我应该把它放在哪里,它能代替什么吗?以下是搜索的相关部分。php:
<?php if (have_posts()) : ?>
<h1 id="archive-title"><?php printf( __(\'Search Results - %s\', \'perkins\'), get_search_query()); ?></h1>
<?php
while (have_posts()) : the_post();
get_template_part(\'content\', get_post_format());
endwhile;
else :
get_template_part(\'content\', \'none\');
endif;
?>
最合适的回答,由SO网友:Pieter Goosen 整理而成
你链接到的那个网站是完全错误的。永远不要使用query_posts
运行任何类型的查询。慢慢来,阅读以下关于此事的帖子:
您也不希望运行任何类型的自定义查询来代替主查询,这会产生/导致比实际解决的问题更多的问题。您还可以阅读以下帖子:
您应该使用
pre_get_posts
根据需要更改主查询。这是更改主查询返回内容的正确方法
add_action( \'pre_get_posts\', function ( $q ) {
if ( !is_admin()
&& $q->is_main_query()
) {
$q->set( \'post_status\', [\'publish\', \'future\'] );
}
});
请记住,上面的代码会影响前端的所有页面。这甚至会在单个帖子页面上显示未来的帖子,通常是404。您应该根据自己的具体需要进行调整