将参数添加到搜索结果页面

时间:2016-04-03 作者:lkl

我想在搜索结果、类别等中显示未来的帖子。

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;
?>

1 个回复
最合适的回答,由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。您应该根据自己的具体需要进行调整

相关推荐

nothing happen in search form

我想创建搜索表单,但当我搜索时什么都没有发生,这是代码:索引。php: <div class=\"tech-btm\"> <?php get_search_form();?> </div> 搜索表单:<form role=\"search\" method=\"get\" id=\"searchform\" action=\"<?php echo home_url(\'/\')?>\"> &