Объединение двух запросов wordpress с разбиением на страницы не работает

Я пытаюсь объединить два запроса WordPress, но он не работает так же, как разбиение на страницы.

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

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

<?php $today = getdate(); $args1 = array( 'post_type' => 'post', 'orderby' => 'comment_count', 'ignore_sticky_posts' => 1, 'date_query' => array( array( 'year' => $today['year'], 'month' => $today['mon'], 'day' => $today['mday'], ), ), 'paged' => $paged, ); $query1 = new WP_Query( $args1 ); $args2 = array( 'post_type' => 'post', 'orderby' => 'comment_count', 'ignore_sticky_posts' => 1, 'paged' => $paged, ); $query2 = new WP_Query( $args2 ); ?> 

EDIT: 1 //

@birgire, я попробовал метод, который вы предложили. Но получил эту ошибку mysql.

 WordPress database error: [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-5,5' at line 1] SELECT SQL_CALC_FOUND_ROWS * FROM ( (SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND ( ( post_date > '2014-08-27 00:00:00' ) ) AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') ORDER BY wp_posts.comment_count DESC LIMIT 1000) UNION ALL (SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND ( ( post_date < '2014-08-27 00:00:00' ) ) AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') ORDER BY wp_posts.comment_count DESC LIMIT 1000 ) ) as combined LIMIT -5,5 

Вы можете попробовать следующее (непроверенное):

Задайте параметры запроса # 1: (сегодня)

  //----------------- // Query part #1: //----------------- $args1 = array( 'post_type' => 'post', 'orderby' => 'comment_count', 'ignore_sticky_posts' => 1, 'date_query' => array( array( 'after' => date('Ym-d'), ), 'inclusive' => true, ) ); 

Установите аргументы запроса # 2: (! Today)

  //----------------- // Query part #2: //----------------- $args2 = array( 'post_type' => 'post', 'orderby' => 'comment_count', 'ignore_sticky_posts' => 1, 'date_query' => array( array( 'before' => date('Ym-d'), ), 'inclusive' => false, ) ); 

Затем мы объединим его:

 //--------------------------- // Combined queries #1 + #2: //--------------------------- $args = array( 'posts_per_page' => 5, 'paged' => ( $paged = get_query_var( 'paged' ) ) ? $paged : 1 , 'sublimit' => 1000, 'args' => array( $args1, $args2 ), ); $results = new WP_Combine_Queries( $args ); 

где мы используем экспериментальный класс WP_Combine_Queries .

В настоящее время он использует UNION но вместо этого вы можете использовать UNION ALL .

GitHub:

Теперь плагин доступен на GitHub.