Вопрос или проблема
У меня есть следующий код в файле archive.php моей темы:
<?php the_archive_title( '<h1 class="page-title">', '</h1>' ); ?>
Это дает мне такие заголовки, как “Category: Russia”, “Tag: America”, “Author: John”.
Я хотел бы удалить часть “Category:”, “Tag:” и “Author:” и отображать только имена категории, тега и автора.
Кто-нибудь знает, как этого добиться?
Спасибо.
Вы можете расширить get_the_archive_title
filter, о котором я упомянул в этом ответе
add_filter('get_the_archive_title', function ($title) {
if (is_category()) {
$title = single_cat_title('', false);
} elseif (is_tag()) {
$title = single_tag_title('', false);
} elseif (is_author()) {
$title="<span class="vcard">" . get_the_author() . '</span>';
} elseif (is_tax()) { //для пользовательских типов записей
$title = sprintf(__('%1$s'), single_term_title('', false));
} elseif (is_post_type_archive()) {
$title = post_type_archive_title('', false);
}
return $title;
});
Используйте функцию single_term_title()
Для заголовка CPT без слова: ‘Archive’:
Если вы создаете пользовательский шаблон архива для CPT и хотите вывести только заголовок CPT без лишних слов, используйте следующую функцию:
post_type_archive_title();
Начиная с WordPress 5.5, вы можете убрать префикс с помощью этого хука:
add_filter('get_the_archive_title_prefix','__return_empty_string');
Мне кажется, что это слишком упрощает, но вот что я сделал…
<h1><?php echo str_replace("Archives: ", "", get_the_archive_title()); ?></h1>
echo '<h1 class="page-title">' . single_cat_title( '', false ) . '</h1>';
в taxonomy-category.php вне публичной части темы.
Я бы использовал фильтр и поместил его в файл functions.php
add_filter( 'get_the_archive_title', 'replaceCategoryName');
function replaceCategoryName ($title) {
$title = single_cat_title( '', false );
return $title;
}
Вы можете использовать следующее, чтобы просто получить только заголовок без префикса
single_cat_title();
Предполагая, что формат всегда: Prefix: Archive Name
, мы можем просто найти первую двоеточие, за которым следует пробел, и показать только содержимое после этого, используя get_the_archive_title() с помощью функций PHP substr() и strpos().
<?php // Показать только часть строки, следующую за первым ": "
echo substr(get_the_archive_title(), strpos(get_the_archive_title(), ': ') + 2);
?>
add_filter('post_type_archive_title', '__return_empty_string', 5);
каталог: wp-includes
файл: general-template.php
найти функцию: get_the_archive_title()
изменить:
if ( is_category() ) {
$title = sprintf( __( 'Category: %s' ), single_cat_title( '', false ) );
} elseif ( is_tag() ) {
$title = sprintf( __( 'Tag: %s' ), single_tag_title( '', false ) );
} elseif ( is_author() ) {
$title = sprintf( __( 'Autor: %s' ), '<span class="vcard">' . get_the_author() . '</span>' );
}
на:
if ( is_category() ) {
$title = sprintf( __( '%s' ), single_cat_title( '', false ) );
} elseif ( is_tag() ) {
$title = sprintf( __( '%s' ), single_tag_title( '', false ) );
} elseif ( is_author() ) {
$title = sprintf( __( '%s' ), '<span class="vcard">' . get_the_author() . '</span>' );
}//если вы хотите удалить или просто изменить текст, если это необходимо
Ответ или решение
Вопрос о том, как убрать префиксы "Category:", "Tag:" и "Author:" из игровых названий архивов в теме WordPress, является распространенной задачей для тех, кто желает сделать свои веб-сайты более лаконичными и профессионально выглядящими. Эта проблема часто возникает у разработчиков, которые стремятся улучшить пользовательский интерфейс своих сайтов, избавляясь от ненужных названий и подчеркивая содержание.
Теория
В WordPress префиксы, такие как "Category:", "Tag:", и "Author:", автоматически добавляются в заголовки архивных страниц с помощью функции get_the_archive_title()
. Это сделано для того, чтобы пользователи могли ясно видеть, какой тип архива перед ними — будь то категория, метка или автор. Однако в некоторых случаях эти префиксы могут быть избыточными и ухудшать восприятие интерфейса сайта.
Основной теоретический подход к их удалению заключается в использовании возможности фильтрации, предусмотренной системой WordPress. В этом случае на помощь приходит хук get_the_archive_title
, который позволяет изменить или полностью убрать нежелательные префиксы.
Пример
Рассмотрим пример использования фильтра get_the_archive_title
. Мы можем воспользоваться функцией add_filter
, чтобы переписать заголовок в зависимости от того, какой архив отображается сейчас. Пример возможного кода, который решает данную задачу, выглядит следующим образом:
add_filter('get_the_archive_title', function ($title) {
if (is_category()) {
$title = single_cat_title('', false);
} elseif (is_tag()) {
$title = single_tag_title('', false);
} elseif (is_author()) {
$title = sprintf('<span class="vcard">%s</span>', get_the_author());
} elseif (is_tax()) {
$title = single_term_title('', false);
} elseif (is_post_type_archive()) {
$title = post_type_archive_title('', false);
}
return $title;
});
Этот код использует функции single_cat_title()
, single_tag_title()
, get_the_author()
и другие для получения названий без предшествующих им префиксов.
Применение
Преимущества использования этого метода очевидны. Во-первых, он позволяет кастомизировать отображение информации на сайте, что может положительно повлиять на восприятие пользователем общего дизайна сайта. Во-вторых, это решение совместимо с будущими обновлениями WordPress и не требует изменений в исходных файлах системы, что снижает вероятность возникновения ошибок при обновлении.
Кроме того, с версии WordPress 5.5, была введена возможность использовать хук get_the_archive_title_prefix
, который предоставляет более прямой способ убирания префиксов. Для этого можно воспользоваться следующим кодом:
add_filter('get_the_archive_title_prefix', '__return_empty_string');
Этот подход значительно упрощает решение проблемы, так как убирается нужда в дополнительных проверках и вызовах функций внутри самого фильтра.
Включение вышеописанных решений в файл functions.php
темы обеспечит постоянство изменений и стабильную работу сайта. Такие изменения не только улучшат визуальную составляющую, но и повысят уровень доверия и комфорта у посетителей сайта, поскольку содержание станет более сосредоточенным и ориентированным на информацию, которая действительно имеет значение.
Таким образом, использование фильтров в WordPress для управления заголовками архивов демонстрирует мощь и гибкость системы в адаптации под специфические требования. Это отличное пример того, как возможности кастомизации WordPress могут быть использованы для удовлетворения уникальных потребностей разработчиков и администраторов сайтов, стремящихся к созданию качественного пользовательского опыта.