В настоящее время должности моего сайта упорядочены по алфавиту по названию:
/* Order Posts Alphabetically */ function prefix_modify_query_order( $query ) { if ( is_main_query() ) { $query->set( 'orderby', 'title' ); $query->set( 'order', 'ASC' ); } } add_action( 'pre_get_posts', 'prefix_modify_query_order' );
Теперь я хочу сортировать сообщения по алфавиту по названию (по возрастанию), но также по дате (по убыванию).
Как этот пример:
Изменение параметра $query->set( 'orderby', 'date title' );
на $query->set( 'orderby', 'date title' );
не разрешает мою проблему, потому что сначала мне нужно показывать последние сообщения.
Буду признателен за любые другие идеи.
Вы можете передать массив в query
как показано в следующем примере, описанном в Codex :
$args = array( 'orderby' => array( 'title' => 'DESC', 'menu_order' => 'ASC' ) ); $query = new WP_Query( $args );
В вашем случае будет что-то вроде этого:
/* Order Posts Alphabetically */ function prefix_modify_query_order( $query ) { if ( is_main_query() ) { $args = array( 'post_date' => 'DESC', 'title' => 'ASC' ); $query->set( 'orderby', $args ); } } add_action( 'pre_get_posts', 'prefix_modify_query_order' );
Если вы хотите, чтобы post_date
был основным фильтром, вам нужно изменить свою позицию в массиве, теперь код будет запрашивать все сообщения в алфавитном порядке, начиная с самого нового post_date.