你永远无法确定,但你可以使用启发式来做出有根据的猜测。你说的是单帖页面还是列表?一些小部件还列出了帖子标题,我想你不在乎边栏吧?
此外,您不知道是否是写在中的标题<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() 根据结果?在这种情况下,你不需要那么早就知道。