Я знаю, что есть и другие подобные вопросы, но не нашел надежного ответа. Так:
Сначала активируйте вещь (упрощенный код):
add_action( 'after_setup_theme', 'theme_setup' );
function theme_setup() {
add_theme_support('title-tag');
}
Во-вторых, удалите тег title из header.php.
В-третьих, в шаблонах страниц перед вызовом get_header() добавьте что-то вроде этого:
add_filter('wp_title', 'set_custom_title', 10, 3);
function set_custom_title($title, $sep, $seplocation){
return 'test';
}
Ну, это вообще не работает в любом шаблоне, будь то страница, архив, пользовательская таксономия или архив типа записи. Нет, ничего. Wordpress сам генерирует заголовки.
Почему? Я делаю что-то неправильно? Обратите внимание, что этот код когда-то просто работал: использовался на других сайтах/темах.
Возможно, это проблема wp5.2.0?
@Vel, это работает, спасибо. Но довольно странно, так как когда-то это было нет-нет... Вам нужно было удалить тег заголовка из головы, чтобы заставить фильтр работать... Ба..






Итак, благодаря @Vel, ответ состоит в том, чтобы повторно добавить тег заголовка (даже если в предыдущих версиях wp> не знаю, до какой версии вам пришлось вместо этого удалить его из заголовка).
Текущий рабочий код для меня:
//functions.php
add_action( 'after_setup_theme', 'theme_setup' );
function theme_setup() {
add_theme_support('title-tag');
}
//header.php
<title><?php wp_title('|', true, 'right'); ?> | <?php echo get_bloginfo('name') ?></title>
//page templates
$window_title = // do something
add_filter('wp_title', function($title, $sep, $seplocation) use($window_title){ return $window_title; }, 10, 3);
Попробуйте использовать следующий код -
add_filter('document_title_parts', function($titles){
return array('title' => 'Custom Title');
});
Пожалуйста, смотрите мой собственный ответ.
Для тех, у кого все еще есть эта проблема с неработающим фильтром wp_title, я бы предложил добавить более высокое значение приоритета. Более высокое значение приоритета гарантирует, что ваш фильтр будет выполнен и не будет переопределен другими фильтрами в вашей теме или установленными плагинами. См. ниже: (ссылка: https://developer.wordpress.org/reference/functions/add_filter/)
// the 9999999 priority value will force this filter to be executed closer to the end. A lower number corresponds with earlier execution
add_filter('wp_title', 'set_custom_title', 9999999, 3);
function set_custom_title($title, $sep, $seplocation){
return 'test';
}
добавьте этот код в header.php
<title><?php wp_title('|', true, 'right'); ?> | <?php echo get_bloginfo('name') ?></title>