【问题标题】:Sorting Wordpress Custom Meta Box value by date按日期对 Wordpress 自定义元框值进行排序
【发布时间】:2012-07-23 01:55:59
【问题描述】:

我正在为 wordpress 主题开发自定义事件帖子类型,但遇到了排序问题。一切都按我的需要工作,直到我将值吐出到模板中。我需要按日期顺序列出事件,但我似乎无法让它发挥作用。这是我的代码:

// From my custom meta box. Shows the type of field that
// the user enters the date into. The prefix is _cmb_
array(
    'name' => 'Event Date',
    'id'   => $prefix . 'event_date',
    'type' => 'text_date'
),

---- // -----

// Grab the date that's input from the user in the
// Custom Meta Box and Convert the text_date to 
// YYYYMMDD format
if ( $field['type'] == 'text_date' ) {
    $new = date('omd', strtotime($new));
}

上面我从日期选择器获取输入并重新格式化文本。

// Tour Dates Loop
$args = array(
    'post_type' => 'event',
    'meta_key'  => '_cmb_event_date',
    'order_by'  => 'meta_value_num',
    'order'     => 'DESC'
);
$tourDates = new WP_Query( $args );

在这里,我使用 WP_Query 来获取正确的帖子类型、元键,并尝试通过该元键对输出进行排序。唯一的问题是事件没有正确排序。

我尝试将_cmb_event_date 转换为整数,但无法使其正常工作。我认为可能日期排序不正确,因为它们不是整数,而是字符串。

我浏览了 Stack 上的大量帖子,但似乎找不到适合我的答案。任何帮助深表感谢!如果您需要更多代码上下文,请告诉我。

【问题讨论】:

  • 经过进一步检查,我用来创建自定义元框的库似乎将日期转换为字符串,即使我使用 strtotime() 将日期转换为时间戳进行排序.难怪排序不能正常工作!

标签: php wordpress sorting loops meta


【解决方案1】:

问题已解决。 'order_by' => 'meta_value_num', 应该是 'orderby' => 'meta_value_num',

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    相关资源
    最近更新 更多