我刚刚在我的主题functions.php
文件中添加了以下过滤器:
function change_the_title() { return 'My modified title'; } add_filter('wp_title', 'change_the_title');
在我的header.php
:
> >
然后,我发现我的网页没有标题不改变!并且标题标签被注入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 '' . wp_get_document_title() . ' ' . "\n"; }
因此,在4.4之后,核心不会将wp_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
是一个好主意,其中的钩子告诉了很多.