Как настроить заголовок страницы результатов поиска?

5 мая 2016 г., 13:21:56
Просмотры: 27.5K
Голосов: 3

Я хотел бы настроить заголовок страницы результатов поиска:

из:

<title>Результаты поиска для "поисковый запрос" – Страница 2 – Название сайта</title>

в:

<title>"поисковый запрос" страница результатов – Страница 2 – Название сайта</title>

В моем шаблоне search.php, get_header() вероятно отвечает за генерацию тега <title>.

Есть ли фильтр, который я могу применить для такой настройки?

0
Все ответы на вопрос 1
4

В функции wp_get_document_title() у нас есть:

// Если это поиск, используем динамический заголовок результатов поиска.
} elseif ( is_search() ) {
        /* translators: %s: поисковая фраза */
        $title['title'] = sprintf( 
            __( 'Результаты поиска для &#8220;%s&#8221;' ), 
            get_search_query() 
        );

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

Пример:

/**
 * Изменяем заголовок документа для страницы поиска
 */
add_filter( 'document_title_parts', function( $title )
{
    if ( is_search() ) 
        $title['title'] = sprintf( 
            esc_html__( '&#8220;%s&#8221; страница результатов', 'my-theme-domain' ), 
            get_search_query() 
        );

    return $title;
} );

Примечание: Это предполагает, что ваша тема поддерживает title-tag.

Обновление:

Могу ли я также настроить часть заголовка "Страница 2" в том же фильтре?

Что касается части страницы, вы можете настроить её аналогичным образом:

/**
 * Изменяем часть страницы в заголовке документа для страницы поиска
 */
add_filter( 'document_title_parts', function( $title ) use( &$page, &$paged )
{
    if ( is_search() && ( $paged >= 2 || $page >= 2 ) && ! is_404() ) 
        $title['page'] = sprintf( 
            esc_html__( 'Это %s страница', 'my-theme-domain' ), 
            max( $paged, $page ) 
        );

    return $title;
} );
5 мая 2016 г. 14:05:50
Комментарии

Работает отлично. Один вопрос: я пробовал изменить параметр domain на 'slug дочерней темы', 'slug родительской темы' и даже удалить параметр — всё работает. Каким может быть практический пример использования параметра domain? Спасибо.

KDX KDX
5 мая 2016 г. 15:51:24

Дополнительный вопрос по этой теме, вместо создания нового вопроса. Могу ли я также настроить часть заголовка Page 2 с помощью того же фильтра? Например, сделать Это 2 страница, что может не иметь смысла в чистом английском, но я настраиваю его под грамматику другого языка.

KDX KDX
5 мая 2016 г. 15:56:13

Отвечаю на свой дополнительный вопрос в комментарии. Изменение оператора return на следующий вариант сделает своё дело: return preg_replace('/Page (\d+)/', 'This is $1 page', $title);

KDX KDX
5 мая 2016 г. 16:21:26

Я добавил пример для части страницы. Я добавил домен, так как строки скорее всего недоступны в базовом переводе, поэтому вам решать, как их перевести. @KDX

birgire birgire
6 мая 2016 г. 00:22:29