尝试排除基于日期的自定义帖子,同时按自定义字段排序

时间:2011-06-23 作者:Ray Gulick

我有一个名为“performance”的自定义帖子类型。我有一个自定义的帖子查询,它根据自定义字段值(订单日期)对帖子进行排序。现在我想排除订单日期在过去的帖子。我想我可以使用相同的“订单日期”值与今天的日期进行比较,以确定是否应该显示帖子,但我找不到一个适用于订单的示例。我所做的一切都破坏了秩序。

这似乎奏效了!

<?php
  $paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1;
  $today = date(\'Y-m-d\');
  query_posts(array(
    \'post_type\' => \'performance\', 
    \'posts_per_page\' => 5, 
    \'caller_get_posts\' => 5, 
    \'paged\' => $paged,
    \'meta_key\' => \'order-date\',
    \'orderby\' => \'meta_value\',
    \'order\' => \'ASC\',
    \'meta_query\' => array(
      array(
        \'key\' => \'order-date\',
        \'meta-value\' => $value,
        \'value\' => $today,
        \'compare\' => \'>=\',
        \'type\' => \'CHAR\'
        )
      )
    ));
if (have_posts()) :
while (have_posts()) : the_post();
?>
请注意,我定义了“$today”,并将其添加到meta\\u数组中,以便与meta值进行比较。过去的性能项目从列表中消失了,一切看起来都应该如此。感谢布雷迪让我走上正轨。

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

你需要利用meta_query http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters

<?php
 $paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1;
 query_posts(array(
 \'post_type\' => \'performance\', 
 \'posts_per_page\' => 5, 
 \'caller_get_posts\' => 5, 
 \'paged\' => $paged,
 \'meta_key\' => \'order-date\',
 \'orderby\' => \'meta_value\',
 \'order\' => \'ASC\',
    \'meta_query\' => array(
        array(
            \'key\' => \'order-date\',
            \'value\' => $value,
            \'compare\' => \'>=\',
            \'type\' => \'CHAR\'
        )
    )
 ));
if (have_posts()) :
while (have_posts()) : the_post();
?>

结束

相关推荐

Get posts by menu ID

我有点困在这里了。我在Wordpress上有一个菜单,里面有一些帖子。我想要的是将所有帖子作为对象检索。我想我已经很接近了,但是SQL查询似乎没有按我所希望的那样工作。这是迄今为止我掌握的数据:$querystr = \" SELECT wposts.* FROM wp_posts wposts LEFT JOIN wp_postmeta wmeta ON wposts.ID = wmeta.post_id LEFT JOIN wp_term_relationships wrel