尝试使用WP_QUERY返回带有和不带有元值的POST

时间:2012-03-16 作者:Rick

我试图在一个查询中返回包含元值的帖子和不包含元值的帖子。这可能吗?

所以,用简单的英语,我试图获取包含日期元键和日期值的帖子,以及没有设置日期的帖子。

这是我到目前为止所拥有的,但它不起作用。更新-我现在在帖子中添加了另一个元,使其更容易。。。我没有添加日期元,所以我没有检查它是否为空,而是检查是否没有设置日期。因此,我修改后的代码现在看起来像这样,但我现在似乎无法订购它。

 $args = array(
            \'cat\' => $type,
            \'post_status\' => \'publish\',
            \'post_type\' => \'post\',
            \'paged\' => get_query_var(\'paged\'),
            \'posts_per_page\' => 10,
                    \'orderby\' => \'meta_value\',
            \'meta_query\' => array(
                    \'relation\' => \'OR\',
                    array(\'key\' => \'date\', \'value\' => date(\'m-d-Y\'), \'compare\' => \'>=\', \'type\' => \'char\'),
                    array(\'key\' => \'no-date\', \'value\' => \'1\', \'compare\' => \'=\')
                    )

        );
所以现在这个“似乎”能回报我想要的。。。然而,我似乎无法使用orderby对其进行排序。。。我希望日期是最短的,未来的日期是最晚的,没有日期的日期要在有日期的日期之后,通过发布日期。

谢谢

1 个回复
SO网友:Marcin

您同时使用\'meta_key\' 和\'meta_query\' - 这是一个错误的用法。删除此代码:

\'meta_key\' => \'date\',
然后再试一次。

删除$cat WP后生成sql查询:

SELECT SQL_CALC_FOUND_ROWS  wp_posts.*
FROM wp_posts
INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)
INNER JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id)
WHERE 1=1
AND wp_posts.post_type = \'post\'
AND (wp_posts.post_status = \'publish\')
AND (
  (
    wp_postmeta.meta_key = \'date\'
    AND CAST( wp_postmeta.meta_value AS CHAR) >= \'03-17-2012\'
  )
  OR (mt1.meta_key = \'no-date\' AND CAST(mt1.meta_value AS CHAR) = \'1\' )
)
GROUP BY wp_posts.ID
ORDER BY post_date desc
LIMIT 0, 10
如果没有结果,请检查数据,因为查询是正确的。

结束

相关推荐

修改此循环以适合我的jQuery滑块(幻灯片)

我正在尝试制作一个滑块,它从特定的自定义帖子类型中获取缩略图,并为每个“幻灯片”显示其中的一个。我让滑块和缩略图正常工作,但我不确定如何修改循环,使其在容器中显示4篇文章,然后重复接下来的4篇文章,依此类推。我的循环如下所示:<div id=\"slides\"> <div class=\"slides_container\"> <?php $loop = new WP_Query(array(\'post_type\' =&