你永远无法确定,但你可以使用启发式来做出有根据的猜测。你说的是单帖页面还是列表?一些小部件还列出了帖子标题,我想你不在乎边栏吧?
此外,您不知道是否是写在中的标题<h1>
标签。如果你看到<h1>{$title}</h1>
, 是帖子标题还是网站名称,还是完全其他的东西?
我将问题简化为:当前的主模板文件(即included by template-loader.php
) 包含<h1>[some stuff]title[some stuff]</h1>
? 这将涵盖<h1>{$title}</h1>
, <h1><?php the_title(); ?></h1>
和其他常见模式。它可能会被评论的部分愚弄,比如<!-- <h1>{$title}</h1> -->
. 它不包括get_template_part()
包括,也许你可以自己添加(但没有简单的挂钩)。当心<h1>Site name</h1> [content] <h2>Post title</h2> [content] <h1>Some other big heading</h1>
, 你不想与之匹配。
总的想法是(晚些时候)加入template_include
筛选,以便知道将包含哪个模板文件。分析此文件,查找上面的模式。如果找到它,请设置一个变量null
到true
. 如果找不到,请将其设置为false
. 缓存结果,因为这可能是一个昂贵的操作,而且模板不会经常更改。
在包含模板之前,您不会知道结果,但我假设您将更改the_title()
根据结果?在这种情况下,你不需要那么早就知道。