Как настроить заголовок страницы результатов поиска?
Я хотел бы настроить заголовок страницы результатов поиска:
из:
<title>Результаты поиска для "поисковый запрос" – Страница 2 – Название сайта</title>
в:
<title>"поисковый запрос" страница результатов – Страница 2 – Название сайта</title>
В моем шаблоне search.php, get_header()
вероятно отвечает за генерацию тега <title>
.
Есть ли фильтр, который я могу применить для такой настройки?

В функции wp_get_document_title()
у нас есть:
// Если это поиск, используем динамический заголовок результатов поиска.
} elseif ( is_search() ) {
/* translators: %s: поисковая фраза */
$title['title'] = sprintf(
__( 'Результаты поиска для “%s”' ),
get_search_query()
);
так что вы можете использовать фильтр document_title_parts
, чтобы адаптировать его под свои нужды.
Пример:
/**
* Изменяем заголовок документа для страницы поиска
*/
add_filter( 'document_title_parts', function( $title )
{
if ( is_search() )
$title['title'] = sprintf(
esc_html__( '“%s” страница результатов', '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;
} );

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

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

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