Таким образом, у меня есть 3 пользовательских типа сообщений, которые я хочу заказать по menu_order & имеют «дату» в качестве резервного параметра, так как большинство сообщений будут иметь порядок меню по умолчанию «0».
Было бы неплохо, если бы pre_get_posts делали это относительно просто (в отличие от чего-то вроде этого – Множественные параметры порядка в пред-предпроцессе () ), но не выглядели вероятными.
Это отлично работает с сообщениями, где для параметра меню задано определенное значение, где оно равно 0, порядок выглядит в основном случайным:
function order_cpt( $query ) { if ( !is_admin() && $query->is_post_type_archive( array ( 'cat1', 'cat2', 'cat3' ) && query->is_main_query() ) { $query->set( 'orderby', 'menu_order'); $query->set( 'order', 'DESC' ); return $query; } } add_action( 'pre_get_posts', 'order_cpt');
Поэтому первый вопрос, на который я, похоже, не могу найти ответ, – это то, как сообщения с таким же порядком меню обрабатываются с использованием вышеприведенной функции?
И pre_get_posts лучший маршрут, или я должен смотреть на пользовательский WP_Query?
благодаря
Для идентичных значений они будут в том порядке, в котором они будут возвращены механизмом базы данных, который обычно был бы порядком их вставки в базу данных.
Во всяком случае, связанный с вами вопрос WP_Query
, вы можете заказать несколько столбцов с помощью WP_Query
:
$query->set( 'orderby', array( 'menu_order' => 'ASC', 'date' => 'ASC' ) );
pre_get_posts
действует на экземпляр WP_Query
и имеет те же параметры, что и для него, поэтому, если pre_get_posts
или пользовательский WP_Query
является правильным выбором, зависит от того, пытаетесь ли вы изменить основной запрос или нет.