如何在WordPress页面上更改标题?

bug*_*net 3 php wordpress yoast

上下文:WordPress 5.4.5,Yoast 3.7.1

我是一个可以访问客户端站点的插件开发人员.该网站安装了Yoast 3.7.1,我想知道这是否重要因为无论我做什么我都无法改变404页面title.

现在在StackOverflow上的其他页面上提出了类似的问题(这里,这里这里例如).那些回答的人询问是否header.php正确嵌入了一个电话wp_title().这就是当前主题中的内容header.php:

    <title><?php wp_title( '|', true, 'right' ); ?></title> 
Run Code Online (Sandbox Code Playgroud)

有趣的是,在我的404.php页面中,wp_get_document_title()告诉我文档标题Page not found - XXXX即使wp_title上面的调用指定分隔符为|.Yoast对标题的重写已被禁用,所以我不确定那些短跑的来源.

我的插件执行REST调用,并从异地提取内容以包含在页面中.该内容的一部分是要使用的文本title.

在以前的客户端站点上,我已经能够执行以下操作:

add_filter('wp_title', 'change_404_title');
function change_404_title($title) {
    if (is_404()) 
    {
        global $plugin_title;
        if (!empty($plugin_title)) 
        {
             $title = $plugin_title;
        }
    }
    return $title;
}
Run Code Online (Sandbox Code Playgroud)

但是,在这个网站上,这是行不通的.

我试过,根据使用的WordPress版本,挂钩pre_get_document_title过滤器,即

add_filter('pre_get_document_title', 'change_404_title');
Run Code Online (Sandbox Code Playgroud)

但再次无济于事.我正在阅读Yoast ...

小智 11

wp_title自4.4版以来已弃用.所以我们应该使用新的过滤器pre_get_document_title.你的代码看起来很好,但我很困惑global $plugin_title.我宁愿请你先尝试一下

add_filter('pre_get_document_title', 'change_404_title');
function change_404_title($title) {
    if (is_404()) {
        return 'My Custom Title';
    }
    return $title;
}
Run Code Online (Sandbox Code Playgroud)

如果它不起作用,那么尝试更改优先级以便最近执行您的功能.

add_filter('pre_get_document_title', 'change_404_title', 50);
Run Code Online (Sandbox Code Playgroud)

  • 是的,优先级就是解决办法。谢谢。给@KhorshedAlam 点赞 (3认同)
  • 我喜欢第二个建议的外观.优先级可能是修复. (2认同)