WordPress: как сортировать сообщения пользовательского типа в алфавитном порядке |  Зона Мартех

WordPress: как сортировать сообщения пользовательского типа в алфавитном порядке | Зона Мартех

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

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

Пользовательская сортировка по типам сообщений

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

Как и практически любую функцию WordPress, ее можно легко настроить с помощью WordPress API. Во мне functions.php файл в моей дочерней теме, я добавил следующий код:

add_action( 'pre_get_posts', function ( $query ) {
	if ( $query->is_archive() && $query->is_main_query() ) { 
	  if ( get_query_var( 'post_type' ) == 'acronym' ) { 
		$query->set( 'order', 'ASC' );
		$query->set( 'orderby', 'title' );
	  };
	};
} );

pre_get_posts функция — это действие, которое выполняется при запросе сообщений. В приведенном выше коде я могу гарантировать, что любой запрос для пользовательский тип записи из акроним специально настроен для сортировки по заголовку в порядке возрастания.

READ  Отслеживание рейтинга: как это сделать правильно

Это не только упорядочивает вывод страниц архива и таксономии, но даже упорядочивает пользовательский тип записи в алфавитно-цифровом порядке в панели администратора WordPress.

WordPress: как сортировать сообщения пользовательского типа в алфавитном порядке | Зона Мартех 3

Поскольку вы устанавливаете параметры запроса по умолчанию, вы также можете добавить другие переменные, такие как количество извлекаемых записей (messages_per_page). Для аббревиатур я возвращаю 25 записей за раз, тогда как по умолчанию для остальной части страницы я использую 10.

Если вы хотите опубликовать пользовательский тип записи только в алфавитном порядке в шаблоне архива, но не в панели администратора WordPress, вы можете изменить этот код на:

function acronym_archive_orderby_title($query) {
    // Check if it's the main query, an archive page, and the post type is 'acronym'
    if ($query->is_main_query() && is_post_type_archive('acronym') && !is_admin()) {
        // Order by title alphabetically
        $query->set('orderby', 'title');
        $query->set('order', 'ASC');
    }
}
add_action('pre_get_posts', 'acronym_archive_orderby_title');

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

Source