WP_Query с дочерним элементом

У меня есть события календаря, я хочу сортировать их по дате создания с запросом, но вот проблема:

У меня есть мета-ключ, который имеет дочерние значения: Первый – это $data = get_post_meta(get_the_ID(),'_event_data',true); и затем я получаю $date = $data['begin'];

Мне нужно сделать сортировку запроса на основе $date = $data['begin'] но как это сделать до цикла? Я не могу изменить код, как я могу его получить? Все и так или иначе, как я пытаюсь это исправить, он заказывает события автоматически заданным идентификатором.

Solutions Collecting From Web of "WP_Query с дочерним элементом"

+ Изменить

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

в

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

Как указано в Справочнике по коду ,

Return: (mixed) Будет массив, если $ single – false. Будет значением поля метаданных, если $ single истинно.

Но почему-то я просто предполагаю, что _event_data не содержит больше, чем фактический (event-) ID. Вероятно, вам придется сделать вторую функцию get_metadata для извлечения всей информации для события на основе его идентификатора. (см. ссылку на код )

Извините, но вы не можете выполнить 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 хранится в формате Ymd или что-то подобное.

Если _event_begin хранится как unix-время, а meta_value_num должен использоваться.