无法在二十个子主题中使用wp_title筛选器

时间:2016-02-23 作者:Bob Diego

我很难覆盖自定义模板页面的管理面板中设置的标题,并输出自定义模板<title> 标签

父主题是WordPress的stock Twenty16,它使用title-tag theme feature (与即将弃用的函数wp\\u title()相反)。根据WordPress Code Reference, 正确的挂钩是wp_title 过滤器:

wp\\u title过滤器用于过滤页面的标题(使用wp\\u title()调用)。这将过滤HTML标记(有时称为“标题标记”或“元标题”)中出现的文本,而不是帖子、页面或类别标题。

因此,我应该能够在函数中简单地创建一个条件测试。php文件并覆盖WordPress在此处创建的标题标记,例如:

    function custom_filter_wp_title( $title, $sep ) {

        // removed conditional to prove not working anywhere
        // if ( is_page_template( \'sometemplate.php\' ) ) {
            $title = "My custom template page...";
        // } 
        return $title;

    }
    add_filter( \'wp_title\', \'custom_filter_wp_title\', 10, 2 );
派生自Codex example.

据我所知,这个自定义过滤器在任何地方都不起作用,后端的标题集出现在HTML标题的标题标记中。我已将优先级提升到99999,但仍然没有。我做错了什么?

2 个回复
SO网友:Erin

如果其他人对此有问题,可能是因为Yoast插件。使用:

add_filter( \'pre_get_document_title\', function( $title ){
    // Make any changes here
    return $title;
}, 999, 1 );

SO网友:Andrew T

我们在标题(标题和帖子标题)中发现了对短代码的支持:

//shortcode support in titles
add_filter( \'the_title\', \'do_shortcode\' );      //should be post title
add_filter( \'wp_title\', \'do_shortcode\' );       //should be HTML/Browser title
add_filter( \'document_title_parts\', \'wp44_header_title_function\' );   //own function for HTML/Browser title
function wp44_header_title_function($title) {
    if (isset($title[\'title\'])) $title[\'title\'] = do_shortcode($title[\'title\']);
    if (isset($title[\'page\'])) $title[\'page\'] = do_shortcode($title[\'page\']);
    if (isset($title[\'tagline\'])) $title[\'tagline\'] = do_shortcode($title[\'tagline\']);
    if (isset($title[\'site\'])) $title[\'site\'] = do_shortcode($title[\'site\']);
    return $title;
}
我称之为wp44,因为在/wp中包含/通用模板。php it表示,这是在4.4中添加的,目的是“在生成文档标题之前对其进行过滤”

我认为标准的wp\\u title过滤器应该可以工作,但我知道我们使用的是一个疯狂的主题,它有自己的功能,看起来像是这个主题,至少document\\u title\\u parts是一种方式。

相关推荐

绕过WP查询中的“supress_Filters”

显然,出于某种不合逻辑的原因,开发人员决定获取所有语言帖子的唯一方法是添加supress_filters=true 到WP\\u查询(而不是像这样language_code=all 选项)。无论如何,我的情况是,我需要获取所有语言的帖子,但也需要使用过滤器修改WP\\u查询。有没有办法强制将我的过滤器添加到查询中,即使supress_filters 设置为false?这是我需要添加的过滤器:add_filter( \'posts_where\', function($where, $wp_query) {