在标签和搜索中包含未来的帖子

时间:2019-05-17 作者:ben.kaminski

我正在使用类似的方法在我的主页上查询和显示未来或预定的帖子:

<?php query_posts(\'post_status=future&posts_per_page=10&order=ASC\'); while ( have_posts() ) : the_post(); ?>

//doing stuff

<?php endwhile; ?>
<?php wp_reset_query(); ?>
这项工作取得了巨大成功。尽管如此scheduledfuture 帖子不希望显示在搜索或标记搜索中。

我想让未来的帖子可以搜索,其中包含的标签可以点击。它们(标签)当前可单击,但单击时会引发错误。让我想到了可怕的“对不起,没有符合你标准的帖子”。

那么,如何启用WP搜索并包含将来的帖子和来自未来帖子的标签呢?

2 个回复
最合适的回答,由SO网友:nmr 整理而成

要获得预期的结果,您必须通过添加future 对的值post_status 参数通过pre_get_posts 过滤器挂钩。

add_action( \'pre_get_posts\', \'se338152_future_post_tag_and_search\' );
function se338152_future_post_tag_and_search( $query )
{
    // apply changes only for search and tag archive
    if ( ! ( $query->is_main_query() && (is_tag() || is_search()) ) )
        return;

    $status = $query->get(\'post_status\');
    if ( empty($status) )
        $status = [\'publish\'];
    if ( !is_array($status) )
        $status = (array)$status;
    $status[] = \'future\';

    $query->set(\'post_status\', $status);
}
Conditional tags is_search()is_tax() 将只允许您在搜索页面或标记存档上修改查询。

SO网友:Brendan Strong

未来和计划发布的帖子不会被视为已发布,因此您需要自定义这些模板中的查询以包含这些结果。

您需要自定义搜索。主题中的php模板。添加一个新的WP查询,类似于您在示例中所做的操作,该查询将未来和计划的帖子拉入模板。然后将该模板中的数据替换为您自己查询中的数据。

对于标签,您需要在主题中创建一个分类模板,并执行与搜索模板非常类似的操作。

相关推荐

Filter Tags for current users

我有一个自定义的post类型调用问题,它有自定义的分类法,称为问题标签。这些问号进一步用于创建动态测验。我想限制用户只使用他们创建的问号。他们无法访问其他人创建的标签。怎么可能呢?让我知道如何让每个用户的标签都是私有的,这样他们就不能在前端表单中使用彼此创建的标签了