Intereting Posts
Else If утверждение ACF Почему get_the_time ('F j') возвращается 30 ноября для всех сообщений? Рекомендуемое изображение и изображение в сообщении Как отображать только выдержку содержимого с пользовательскими типами сообщений? Что бы восстановить и оптимизировать базу данных WordPress? Таксономия Meta Box в профиле пользователя? Удалять wpautop только из определенных коротких кодов Включение автосохранения при отключении плагина Фильтр для post_thumbnail: ссылка на маленький src и добавление атрибута данных замените wp_get_attachment_image своей собственной функцией Где вызов обратного вызова этой функции? Разбиение страницы на WP_User_Query, не обновляющее текущую страницу Миграция WordPress: получение 404 ошибок: работает только домашняя страница Как проверить роль пользователя и перенаправить на определенную страницу в соответствии с ролью при входе в WordPress? WP_Query: получите 3 случайных сообщения из 10 последних

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

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

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

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

+ Изменить

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