Мы отсортируем записи в WordPress в публичной части для определенной таксономии. На базе этого примера вы сможете легко построить свою собственную логику сортировки.

Ниже приведен код, который нужно вставить в functions.php вашей темы:

function change_order_post_list( $query ){

  if( !is_admin() && $query->is_main_query() && $query->query['taxonomy'] == 'status' ) {

    $query->set('meta_key'  , 'date_actual');
    $query->set('orderby'   , 'meta_value');
    $query->set('order'     , 'DESC');

  }
}
add_action('pre_get_posts', 'change_order_post_list', 1 );

Немного подробностей.

Функция будет срабатывать перед тем, как движок полезет в базу данных за записями. Нам остается просто переопределить значения по-умолчанию.

В условии мы проверяем:

  • Находимся ли мы в административном разделе (в /wp-admin);
  • Запрос является «главным». Например, если мы получаем записи через get_posts() в шаблоне — это не главный запрос. Главным будет страница, на которой мы это делаем;
  • Запрос вытаскивает посты из нашей собственной таксономии status;

Если все условия сработали, мы сортируем по значению произвольного поля date_actual в порядке убывания.

Если принцип работы понятен, то вы сможете легко добавить свою логику в этот пример.


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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*

*

*