WP_Query with child element

时间:2016-02-16 作者:Woot

我有我的日历事件,我想通过查询按创建日期对它们进行排序,但问题是:

我有一个具有子值的元键:第一个是$data = get_post_meta(get_the_ID(),\'_event_data\',true);然后我得到$date = $data[\'begin\'];

我需要根据$date = $data[\'begin\'] 但是在循环之前我该怎么做呢?我无法更改代码,我如何才能获得它?无论我如何尝试修复它,它都会根据自动给定的id对事件进行排序。

2 个回复
SO网友:rob_st

改变

$data = get_post_meta(get_the_ID(),\'_event_data\',true);

$data = get_post_meta(get_the_ID(),\'_event_data\',false);
Code Reference,

Return:(mixed)如果$single为false,则为数组。如果$single为true,则为元数据字段的值。

但不知怎的,我只是猜测_event_data 没有比实际(事件)ID更多的内容。您可能需要进行第二次get_metadata 函数根据事件ID检索事件的所有信息。(请参阅:Code Reference)

SO网友:Dan Ștefancu

抱歉,您不能执行ORDER BY 在具有序列化数组的mysql查询中,如您的情况。

一种解决方法是将日期存储为单独的元条目,以便您可以按其值进行查询,如下所示:

    $sorted_calendar_events = new WP_Query(array(
        \'post_type\' => \'...\',
        \'meta_key\' => \'_event_begin\',
        \'orderby\' => array( \'meta_value\', \'date\' ),
        \'order\' => \'DESC\'
    ));
鉴于以下事实:_event_begin 存储在Y-m-d 格式或类似的东西。

如果_event_begin 存储为unix时间和orderbymeta_value_num 应使用。

相关推荐

将wp_Query替换为wp_User_Query

我在插件中制作了一些订阅者档案和单曲(个人资料页),其中我还包括了一个“用户单曲”模板,通过template_include. 不过,我正在尝试从插件中删除一些模板,以使其使用主题模板。我用了locate_template( \'single.php\' ) 从活动主题中选择单个模板。我没有使用全局wp_query 在本例中显示我的内容,但页面显示了基于查询默认值的循环(十篇帖子)。我想知道的是,我是否可以完全放弃默认查询,用wp_user_query 我可以将查询到的用户ID输入其中。然后我想筛选the