Я просто добавляю следующий фильтр в свой файл functions.php
темы:
function change_the_title() { return 'My modified title'; } add_filter('wp_title', 'change_the_title');
И в моем header.php
:
<!DOCTYPE html> <html <?php language_attributes(); ?>> <head> <meta charset="<?php bloginfo( 'charset' ); ?>"> <meta id="viewport" name="viewport" content="width=device-width"> <link rel="profile" href="http://gmpg.org/xfn/11"> <link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>"> <?php wp_head(); ?> </head> <body <?php body_class();?>>
Затем я обнаружил, что название моей страницы не изменилось! И тег title был введен в функцию wp_head
.
Более того, если я вызову функцию wp_title
вручную в заголовке, она вернет ожидаемое значение.
Что случилось? Как я могу обойти это?
Дополнение: Моей версией WordPress является 4.4.
Наконец, я узнал, что код ядра wordpress был изменен, см. Ниже фрагмент кода.
/** * Displays title tag with content. * * @ignore * @since 4.1.0 * @since 4.4.0 Improved title output replaced `wp_title()`. * @access private */ function _wp_render_title_tag() { if ( ! current_theme_supports( 'title-tag' ) ) { return; } echo '<title>' . wp_get_document_title() . '</title>' . "\n"; }
Таким образом, после 4.4 ядро не вводит результат wp_title
в <title>
заголовка <title>
, но делает то же самое с новой функцией wp_get_document_title
.
Поэтому вместо этого мы можем сделать то же самое:
1. изменить название напрямую:
add_filter('pre_get_document_title', 'change_the_title'); function change_the_title() { return 'The expected title'; }
2. Фильтрация титульных частей:
add_filter('document_title_parts', 'filter_title_part'); function filter_title_part($title) { return array('a', 'b', 'c'); }
Подробнее см. Здесь: https://developer.wordpress.org/reference/functions/wp_get_document_title/
PS: Взгляд в источник функции
wp_get_document_title
– хорошая идея, крючки внутри которой много говорят.
Не уверен, нужно ли его вводить переменную, но попробуйте это.
function change_the_title($title) { return 'My modified title'; } add_filter('wp_title', 'change_the_title');
вам не хватает title
в теге head
, Add In <head>
tag
<title><?php wp_title('|', true, 'left'); ?></title>
<title><?php wp_title('|', true, 'left'); ?></title>
ваш wp_filter будет работать нормально.