wp_title过滤器对<title>标记没有任何影响

时间:2015-12-14 11:59:33

标签: php html wordpress

&lt; p&gt;我刚刚在我的主题中添加了以下过滤器&lt; code&gt; functions.php&lt; / code&gt;文件:其中/ p为H. &lt; pre&gt;&lt; code&gt; function change_the_title(){     返回&#39;我修改后的标题&#39 ;; } add_filter(&#39; wp_title&#39;,&#39; change_the_title&#39;); &LT; /代码&GT;&LT; /预&GT; &lt; p&gt;在我的&lt; code&gt; header.php&lt; / code&gt;中:&lt; / p&gt; &lt; pre&gt;&lt; code&gt;&lt;!DOCTYPE html&gt; &lt; html&lt;?php language_attributes(); ?&GT;&GT; &LT; HEAD&GT;     &lt; meta charset =&#34;&lt;?php bloginfo(&#39; charset&#39;); ?&GT;&#34;&GT;     &lt; meta id =&#34; viewport&#34;命名=&#34;视&#34;含量=&#34;宽度=设备宽度&#34;&GT;     &lt; link rel =&#34; profile&#34; HREF =&#34; HTTP://gmpg.org/xfn/11"&GT;     &lt; link rel =&#34; pingback&#34; href =&#34;&lt;?php bloginfo(&#39; pingback_url&#39;); ?&GT;&#34;&GT;     &lt;?php wp_head(); ?&GT; &LT; /头&GT; &lt; body&lt;?php body_class();?&gt;&gt; &LT; /代码&GT;&LT; /预&GT; &lt; p&gt;然后,我发现我的网页标题确实&lt; strong&gt; NOT&lt; / strong&gt;更改!并且标题标签被注入&lt; code&gt; wp_head&lt; / code&gt; 。功能&LT; / p为H. &lt; p&gt;更多,如果我调用函数&lt; code&gt; wp_title&lt; / code&gt;在标题中手动,它确实返回预期值。&lt; / p&gt; &lt; p&gt;这是怎么回事?我该如何解决这个问题?&lt; / p&gt; &LT; HR&GT; &lt; p&gt;另外:我的WordPress版本是4.4。&lt; / p&gt;

3 个答案:

答案 0 :(得分:33)

我终于发现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>标记,而是使用新函数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是一个好主意,里面的钩子说明了很多。

答案 1 :(得分:0)

不确定是否需要注入变量,但请尝试此操作。

function change_the_title($title) {
    return 'My modified title';
}
add_filter('wp_title', 'change_the_title');

答案 2 :(得分:-2)

您在title代码中遗漏了head,添加了<head>代码

<title><?php wp_title('|', true, 'left'); ?></title>你的wp_filter会正常工作。