Posts not showing

时间:2017-02-10 作者:Naz

我已经创建了一个房地产主题,每个房产都有一个房产列表到期日,之后房产将不再显示在网站上。每个属性都是一个自定义属性帖子类型。我只使用活动属性的代码是;

function live_properties_only( $query ) {

    if ( ! is_main_query() ) {

        $today = date(\'Ymd\');
        $meta_query = array (
            \'post_type\'      => \'properties\',
            \'meta_query\' => array(
                    \'key\'       => \'date_listing_expires\',
                    \'compare\'   => \'>\',
                    \'value\'     => $today,
                ),
        );

    $query->set(\'meta_query\',$meta_query);

    }
}

add_action( \'pre_get_posts\', \'live_properties_only\' );
这在函数中。php文件,唯一的问题是阻止显示常规博客帖子。如何解决此问题,使博客帖子显示,并且只显示未过期的属性。

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

我想你需要检查一下你是否在properties 在操作查询之前输入存档,这样不会影响其他存档。

此外,您需要检查$query 是主查询,因此其他查询不受影响(函数is_main_query() 做不同的事情;不检查实际查询;如果启用调试,您将在日志中收到一条消息,说明您使用is_main_query() 在里面pre_get_posts 操作)。最后,您可能希望排除管理端的查询操作:

function live_properties_only( $query ) {

    if ( is_post_type_archive( \'properties\' ) && ! is_admin() && $query->is_main_query() ) {

        $today = date(\'Ymd\');
        $meta_query = array (
            \'meta_query\' => array(
                    \'key\'       => \'date_listing_expires\',
                    \'compare\'   => \'>\',
                    \'value\'     => $today,
                ),
        );

    $query->set(\'meta_query\',$meta_query);

    }
}

add_action( \'pre_get_posts\', \'live_properties_only\' );
PD:比较元字段中的日期应使用YYYY-MM-DD格式(PHP为Y-m-ddate() 功能);然后可以设置参数\'type\' => DATE 你将以测试的方式进行日期比较;其他方法也可以,但WP_Query 尚未使用它们进行测试(显然,元字段值也需要以这种格式存储):

        $today = date(\'Y-m-d\');
        $meta_query = array (
            \'meta_query\' => array(
                    \'key\'       => \'date_listing_expires\',
                    \'compare\'   => \'>\',
                    \'value\'     => $today,
                    \'type\'      => \'DATE\'
                ),
        );

SO网友:mr__culpepper

您似乎只查询“属性”类型的帖子我不是百分之百确定,但是删除post\\u type行可以解决这个问题。我希望这有帮助:)

$meta_query = array (
            \'meta_query\' => array(
                    \'key\'       => \'date_listing_expires\',
                    \'compare\'   => \'>\',
                    \'value\'     => $today,
                ),
        );

相关推荐

Increase offset while looping

我正在编写一个自定义帖子插件,它将自定义帖子分组显示为选项卡。每组4个岗位。是否可以编写一个偏移量随每次循环而增加的查询?因此,结果将是:-第一个查询显示从1到4的帖子-第二个查询显示从5到8的帖子-第三个查询显示从9到12的帖子等。 <div class=\"official-matters-tabs\"> <?php $args = array(\'post_type\' => \'official-matters\', \'showp