通过包含日期戳的自定义字段对循环的输出进行排序

时间:2013-09-27 15:29:41

标签: php wordpress sorting loops

我正在使用自定义字段来存储用户输入的日期的时间戳。我想显示按该自定义日期排序的帖子,但他们拒绝按自定义字段排序。

在这里,我使用此自定义元框工具注册自定义字段 - https://github.com/jaredatch/Custom-Metaboxes-and-Fields-for-WordPress

// the prefix is _cmb_
array(
    'name' => 'Start Time',
    'id'   => $prefix . 'start_time',
    'type' => 'text_datetime_timestamp',
),

然后我使用WP_Query循环使用以下参数发布帖子:

$args = array(
  'post_type' => 'talks',
  'posts_per_page' => -1,
  'orderby' => '_cmb_start_time',
  'order' => 'ASC'
); // show talks ordered by start time

$custom_query = new WP_Query($args);

这将按照添加顺序打印帖子,而不是按自定义字段日期的顺序打印。


更新

我还试图过滤另一个自定义字段类型“room”,其值等于“room 1”:

$args = array(
  'post_type' => 'talks',
  'posts_per_page' => -1,
  'orderby' => '_cmb_start_time',
  'order' => 'ASC',
  'meta_key' => 'room',
  'meta_value' => 'room 1'
);

解决方案:

借助@joebuckle的解决方案,我最终得到了这个版本非常好的版本:

$args = array(
  'post_type' => 'talks',
  'posts_per_page' => -1,
  'meta_key' => '_cmb_start_time',
  'orderby' => 'meta_value_num',
  'order' => 'ASC',
  'meta_query' => array(
    array(
      'key' => 'room',
      'value' => 'room 1',
      'compare' => '='
    )
  ));

1 个答案:

答案 0 :(得分:0)

尝试这样(ref WP_Query

$args = array(
    'post_type' => 'talks',
    'posts_per_page' => -1,
    'meta_key' => '_cmb_start_time',
    'orderby' => 'meta_value_num',
    'order' => 'ASC'
); // show talks ordered by start time

$custom_query = new WP_Query($args);