Удалить “Category:”, “Tag:”, “Author:” из the_archive_title

Вопрос или проблема

У меня есть следующий код в файле 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();

Из developer.wordpress.org

Начиная с 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 могут быть использованы для удовлетворения уникальных потребностей разработчиков и администраторов сайтов, стремящихся к созданию качественного пользовательского опыта.

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

Капча загружается...