Упорядочивание записей по дате публикации с помощью WP_Query исключает год

#wordpress

#wordpress

Вопрос:

Необходимо упорядочивать сообщения по дате публикации и по ДНЯМ. Теперь, если использовать порядок по умолчанию:

             $args = array (
                'post_type' => 'post',
                'monthnum'  => '1',
                'orderby' => 'date',
                'order'   => 'ASC',                    
                'posts_per_page' => '-1'
            );
  

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

21.01.2016

03.01.2017

16.01.2018

….

Но нужен порядок только по дням:

03.01.2017

16.01.2018

21.01.2016

Ответ №1:

Вы можете использовать posts_orderby для фильтрации ORDER BY предложения.

Это будет файл темы functions.php :

 function posts_orderby_day( $sql, $query ) {
    if ( 'day' === $query->get( 'orderby' ) ) {
        global $wpdb;
        $order = $query->get( 'order' );
        $sql = "DAY( {$wpdb->posts}.post_date ) $order";
    }
    return $sql;
}
add_filter( 'posts_orderby', 'posts_orderby_day', 10, 2 );
  

А затем в вашем $args установите orderby значение day :

 $args = array (
    'post_type'      => 'post',
    'monthnum'       => '1',
    'orderby'        => 'day', // set to "day"
    'order'          => 'ASC',
    'posts_per_page' => '-1',
);
  

Комментарии:

1. Отлично! Спасибо!