问题:如何更改 WordPress 页面的标题?

背景:WordPress 5.4.5,Yoast 3.7.1

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

现在在 StackOverflow 上的其他页面上已经提出了类似的问题(例如此处为,此处为和此处为例如),那些回答的人已询问对[10 的调用是否正确嵌入了一个[1z。以下是当前主题的header.php中的内容:

    <title><?php wp_title( '|', true, 'right' ); ?></title> 

有趣的是,在我的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;
}

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

我已经尝试过,根据正在使用的 WordPress 版本,挂钩pre_get_document_title过滤器,即

add_filter('pre_get_document_title', 'change_404_title');

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

解答

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;
}

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

add_filter('pre_get_document_title', 'change_404_title', 50);
Logo

WordPress社区为您提供专业的建站知识与服务支持,提供一步到位的镜像安装和wordpress主题与插件支持

更多推荐