具有多个元数据比较的Query_Posts()

时间:2015-01-06 作者:Dan

我有一堆属于第6类的帖子,每个帖子都有相同的元字段。我对两个字段特别感兴趣:“pce\\U monday\\u open”和“pce\\U monday\\u close”,这两个字段都有数值。

我想运行query\\u posts()查询,返回类别6中的帖子,其中一些数字$pce\\u time位于两个元字段的值之间。我当前的查询参数是:

$pce_arg = array(
\'cat\' => 6,
\'meta_query\' => array(
array(\'key\' => \'pce_monday_open\', \'value\' => $pce_time, \'compare\' => \'<=\' ),
array(\'key\' => \'pce_monday_close\', \'value\' => $pce_time, \'compare\' => \'>=\' )
)
);
不幸的是,这似乎不起作用,没有帖子被退回。我的搜索似乎可以与其他查询参数配合使用(例如搜索其他元字段以获得精确匹配),因此我认为我的比较参数存在问题。

我写的东西有什么明显的错误吗?或者这是正确的,问题可能在其他地方?

1 个回复
SO网友:cybmeta

第一do not query_posts; 使用WP Query 相反尽管如此,我认为pce_monday_open 低于pce_monday_close 你想在pce_monday_openpce_monday_close, 所以我认为你的比较逻辑是错误的。此外,您可能需要设置两个元查询数组之间的关系:

$pce_arg = array(
    \'cat\' => 6,
    \'meta_query\' => array(
        \'relation\' => \'AND\',
        array(
            \'key\'     => \'pce_monday_open\',
            \'value\'   => $pce_time,
            \'compare\' => \'<=\' ),
        array(\'
            key\'      => \'pce_monday_close\',
            \'value\'   => $pce_time,
            \'compare\' => \'>=\'
        )
    )
);

$query = new WP_Query( $pce_arg );

if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        //Loop on each post
    }
} else {
    // no posts found
}

wp_reset_postdata();

结束

相关推荐

WordPress Search

我正试图在我的一个网站上写一个搜索功能,它似乎并没有吸引任何页面,只有帖子。下面是代码。搜索表单: <form role=\"search\" method=\"get\" id=\"searchform\" action=\"<?php echo home_url( \'/\' ); ?>\"> <input type=\"text\" value=\"Search\" onblur=\"if (this.value