我正在使用一个自定义字段来存储用户输入的日期的时间戳。我想显示按该自定义日期排序的帖子,但他们拒绝按自定义字段排序。
在这里,我使用此自定义元框工具注册自定义字段 - 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);
这将按添加顺序打印帖子,而不是按自定义字段日期的顺序打印帖子。
更新
我还尝试按另一个值等于"房间 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' => '='
)
));
试试这样(参考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);