Intereting Posts
Удаление старых сообщений обновить пользовательский профиль пользовательского поля из формы переднего плана Заголовок HTML-заголовка разбит в моей дочерней теме массив post_categories с использованием переменной Загруженные изображения не отображаются в Media Library, если в IPTC есть специальные символы Пользовательские форматы редактора TinyMCE в раскрывающемся списке Как найти функцию, которая выводит массив Как передать url в качестве параметра в add_rewrite_rule Как добавить кнопку SAVE для замены PUBLISH на пользовательский тип сообщения? Как показать термины таксономии из базы данных wordpress? Нежелательное пользовательское поле, добавленное в область редактирования страницы wp Автоматическая установка пользовательского поля в пользовательский тип публикации Предоставление вложений страницы архива как отключить проверку электронной почты на wp-admin / options-general.php multisite admin e-mail почему создание таблиц с использованием $ wpdb не выполняется при установке плагинов?

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 должен использоваться.