Получаем заголовок архива с помощью get_the_archive_title

Получаем Заголовок Архива (get_the_archive_title) │ WP 4.1.0

Эта функция позволяет получать заголовок архива на основе запрашиваемого объекта.

Использование

Функция вызывается следующей командой:

get_the_archive_title();

Пример Возврата

Функция возвращает строку — заголовок архива.

Примеры Использования

Заголовок для всех типов страниц архива

Предположим, у нас есть файл шаблона index.php, который обрабатывает все архивные страницы. Нам нужно указать для каждой из них разный заголовок. Например:

  • Если это категория: "Категория: оптимизация".
  • Если это метка: "Метка: кодирование".
  • Если архив по годам: "Год: 2104".

Ранее, до версии 4.1, мы использовали множество условий if ... else ... и условные теги, но теперь достаточно одной строчки:

Заголовок для пользовательского типа записи без слова «Архив»

Если вы создаете пользовательский шаблон архива для пользовательского типа записи (CPT) и хотите вывести только заголовок CPT без дополнительных слов, таких как "Архив", используйте следующую функцию:

echo post_type_archive_title('', false);

Текст перед заголовком архива

Если вы хотите добавить текст или выполнить функцию перед заголовком архива, используйте фильтр get_the_archive_title:

add_filter('get_the_archive_title', 'modify_archive_title', 10, 1);

function modify_archive_title($title) {
    $var = "1";
    return $var . $title;
}

Или проще:

$q = get_queried_object();
$title = is_category() ? $q->name : $q->labels->name;

Удаление "ярлыка" архива

Если вы хотите убрать "Категория:", "Метка:", "Автор:", "Архивы:" и другие подобные слова из заголовка архива, используйте get_the_archive_title_prefix, который был представлен в версии 5.5:

// Удаляем "Категория:", "Метка:", "Автор:", "Архивы:" и т.д. из заголовка архива
add_filter('get_the_archive_title_prefix', '__return_empty_string');

Теперь, если раньше выводилось "Категория: Оптимизация", то теперь будет просто "Оптимизация".

Этот фильтр должен быть вызван до вызова функции, чтобы он был применен.

Изменение префикса заголовка архива

Если вы хотите изменить префикс заголовка страницы архива, вы можете сделать это так:

 'Раздел:'); ?>

Теперь, если раньше выводилось "Категория: Оптимизация", будет "Раздел: Оптимизация".

Использование до WP 5.5

Если вы используете версию WordPress до 5.5, добавьте следующую функцию в файл functions.php вашей темы (или дочерней темы):

add_filter('get_the_archive_title', 'my_theme_archive_title');

function my_theme_archive_title($title) {
    if (is_category()) {
        $title = single_cat_title('', false);
    } elseif (is_tag()) {
        $title = single_tag_title('', false);
    } elseif (is_author()) {
        $title = '' . get_the_author() . '';
    } elseif (is_post_type_archive()) {
        $title = post_type_archive_title('', false);
    } elseif (is_tax()) {
        $title = single_term_title('', false);
    }
    return $title;
}

Изменения в Функции

  • С версии 4.1.0 — функция была введена.
  • С версии 5.5.0 — часть заголовка обернута в элемент <span>.

Полный Код Функции get_the_archive_title

function get_the_archive_title() {
    $title  = __('Архивы');
    $prefix = '';

    if (is_category()) {
        $title  = single_cat_title('', false);
        $prefix = _x('Категория:', 'префикс заголовка архивов категорий');
    } elseif (is_tag()) {
        $title  = single_tag_title('', false);
        $prefix = _x('Метка:', 'префикс заголовка архивов меток');
    } elseif (is_author()) {
        $title  = get_the_author();
        $prefix = _x('Автор:', 'префикс заголовка архивов авторов');
    } elseif (is_year()) {
        $title  = get_the_date(_x('Y', 'формат даты архивов по годам'));
        $prefix = _x('Год:', 'префикс заголовка архивов по годам');
    } elseif (is_month()) {
        $title  = get_the_date(_x('F Y', 'формат даты архивов по месяцам'));
        $prefix = _x('Месяц:', 'префикс заголовка архивов по месяцам');
    } elseif (is_day()) {
        $title  = get_the_date(_x('F j, Y', 'формат даты архивов по дням'));
        $prefix = _x('День:', 'префикс заголовка архивов по дням');
    } elseif (is_tax('post_format')) {
        // Пример с форматами по��тов
    } elseif (is_post_type_archive()) {
        $title  = post_type_archive_title('', false);
        $prefix = _x('Архивы:', 'префикс заголовка архивов пользовательских типов записей');
    } elseif (is_tax()) {
        $queried_object = get_queried_object();
        if ($queried_object) {
            // Получение заголовка для пользовательского таксономии
        }
    }

    $original_title = $title;

    $prefix = apply_filters('get_the_archive_title_prefix', $prefix);
    if ($prefix) {
        $title = sprintf(_x('%1$s %2$s', 'заголовок архива'), $prefix, '' . $title . '');
    }

    return apply_filters('get_the_archive_title', $title, $original_title, $prefix);
}

Связанные Функции

  • get_post_type_archive_link()
  • is_archive()
  • is_post_type_archive()
  • post_type_archive_title()
  • the_archive_title()
  • WP_Widget_Archives()

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

Leave a Reply

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