Intereting Posts
MultiPostThumbnail и the_post_thumbnail как использовать ajax в области администрирования плагина? Настройка страницы выхода по умолчанию WordPress Получить раздел ввода, переданный в sanitize_callback Фильтр Пользовательский тип сообщения другим типом персонализированного сообщения Как «Global Ignore» / «Hell Ban» кого-то, ограничивать доступность только для автора? Переписать url post_tag для пользовательского типа сообщения API-интерфейс WordPress Заменить сценарии на ненужных страницах с помощью remove_action Как я могу открыть свою административную панель для всех? Запрос игнорирует параметр «исключить»? Когда мы регистрируем пользовательскую таксономию или тип публикации, вообще ли изменена база данных WP? использование admin_url () в add_menu_page () Удалите wpautop из всех сообщений / страниц, кроме моего настраиваемого типа сообщения как остановить слайд-шоу в галерее

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

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

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

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

Есть идеи?

Благодаря,

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

Код

 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 .