Intereting Posts
Если у меня есть пользовательский тип сообщения с 5 настраиваемыми полями, мне нужно создать новый цикл для ссылки на каждый из них? как избежать преобразования символов на страницах WordPress? Как я могу добавить функции загрузки вне области администрирования? Получение 404 при попытке загрузить /wp-admin/plugin-install.php Изменение структуры постоянной ссылки только для разбивки на страницы Есть ли способ предотвратить изменение автора, когда редактор / администратор редактирует сообщение? Импорт (XML / WXR) не работает на некоторых сообщениях Сделайте страницу плагина вне влияния стиля темы Категория, основанная на идентификаторе сообщения Вкладка jQuery UI не работает на странице плагина Ссылка на конкретный раздел Customizer Добавить ссылку подменю в add_submenu_page, которая открывается в новом окне Запросы сообщений на основе настраиваемого значения поля Отключить вставку изображений в редактор wordpress WordPress – как заменить <! – больше -> на строку на the_content () в single.php

Как переставить пул сообщений, соединенных двумя запросами?

Мне нужно выбрать должности в течение двух разных месяцев (текущий, прошлый). Насколько я знаю, невозможно передать параметр m date в виде массива целого числа вместо целого числа, поэтому я выполняю два разных запроса и получаю все сообщения, возвращенные в один и тот же массив.

Вопрос в том, как изменить порядок результирующего пула сообщений? Простое нажатие второго пула в массив, возвращенный первым запросом, недостаточно, так как аргумент orderby находит разрыв в соединении двух массивов.

Я попытался использовать usort но я получаю сообщение о том, что You can't use WP_Post object as an array .

Есть идеи?

Благодаря,

Solutions Collecting From Web of "Как переставить пул сообщений, соединенных двумя запросами?"

Вот как я подхожу к нему:

Код

 function my_pseudo_date_query( $where, $query ) { global $wpdb; $dq = $query->get('my_date_query'); if( $dq && !empty( $dq['after'] ) ){ $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_date >= %s" $dq['after'] ); } if( $dq && !empty( $dq['before'] ) ){ $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_date <= %s", $dq['before'] ); } return $where; } add_filter( 'post_where', 'my_pseudo_date_query', 10, 2 ); 

Пример использования:

 $now = new DateTime( 'now' ); $first_of_last_month = new DateTime( 'first day of last month' ); $my_query = new WP_Query( array( 'my_date_query' => array( 'before' => $now->format( 'Ymd H:i:s' ), 'after' => $first_of_last_month->format( 'Ymd H:i:s' ), ); ) ); 

В этом примере аргумент before лишний.

замечания

  1. Это не было проверено, это код «в принципе».
  2. Я был здесь довольно ленив, и ключи before и after атрибута my_date_query довольно строгие. Они должны быть в Ymd H:i:s (php). Но этого достаточно.
  3. Как отмечено в комментариях, WordPress 3.7 предоставит date_query в качестве аргумента. Вышеупомянутый код является «совместимым с my_ » в том смысле, что после обновления до 3.7 вы можете удалить префикс my_ из примера.
  4. В примере предполагается PHP5.3 + . Хотя его довольно просто обойти это ограничение.
  5. Если вы используете с get_posts() , не забудьте установить suppress_filters в false .