С новой темой (и дочерней темой), которую я развернул в 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 функция — это действие, которое выполняется всякий раз, когда запрашиваются сообщения. В приведенном выше коде я могу гарантировать, что любой запрос о пользовательский тип записи от акроним специально настроен для сортировки по имени в порядке возрастания.
Он не только устанавливает этот порядок в выводе архива и страницы таксономии, но даже упорядочивает пользовательский тип записи в алфавитно-цифровом порядке в панели администратора WordPress.
Поскольку вы устанавливаете параметры запроса по умолчанию, вы также можете добавить другие переменные, такие как количество извлекаемых записей (сообщений_на_странице). Что касается аббревиатур, я возвращаю 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');
Пользовательские типы сообщений могут помочь значительно расширить возможности вашего сайта… и все это можно сделать с помощью простого кода в вашей дочерней теме (или базовой теме) без необходимости использования плагинов. На самом деле, я рекомендую не использовать плагины, потому что они часто добавляют дополнительные вычислительные затраты, которые могут замедлить работу вашего сайта. В настоящее время я работаю над клиентским сайтом, на котором они хотели бы размещать объявления о вакансиях… и этот код им тоже подойдет!