我很难覆盖自定义模板页面的管理面板中设置的标题,并输出自定义模板<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,但仍然没有。我做错了什么?
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是一种方式。