经过一些实验,我得出了以下建议:是否<title>
标记在父主题中“硬编码”header.php
? 如果是这种情况,您可以尝试删除<title>
来自子主题的标记header.php
(复制您父母的header.php
,然后通过functions.php
:
add_theme_support( \'title-tag\' );
我将试着解释是什么导致我提出这个建议:我按照你和其他人的建议做了尝试,但结果发现
two <title>
tags 在源代码中。第一个标题是标准标题,第二个标题是修改后的标题。但是(当然)在浏览器标题栏中,我只能看到默认标题。
然后我检查了header.php
我使用的父主题(214)和<title>
标签确实是在模板中硬编码的,如下所示:
<title><?php wp_title( \'|\', true, \'right\' ); ?></title>
删除后,我将以下代码添加到子主题的
functions.php
它成功了:
/**
* Theme support added
*/
function add_theme_support_child() {
add_theme_support( \'title-tag\' );
}
add_action( \'after_setup_theme\', \'add_theme_support_child\', 11 );
/**
* Change the title of a page
*
*/
function change_title_for_a_template( $title ) {
// Check if current page template is \'template-homepage.php\'
// if ( is_page_template( \'template-homepage.php\' ) ) {
// change title parts here
$title[\'title\'] = \'My Title\';
$title[\'tagline\'] = \'My fancy tagline\'; // optional
$title[\'site\'] = \'example.org\'; //optional
// }
return $title;
}
add_filter( \'document_title_parts\', \'change_title_for_a_template\', 10, 1 );
因此,在移除
<title>
模板中的标记–只有
two <title>
后者被忽略的标记。你的主题也会有同样的问题吗?
Since wp 4.4.0 however the <title>
tag is created dynamically 按功能_wp_render_title_tag()
基本上调用另一个函数wp_get_document_title()
并围绕结果包装html标记。长话短说:如果你的主题header.php
缺少<title>
tag,您可以直接通过pre_get_document_title
或document_title_parts
如上所述here:
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\');
}