如何从插件脚本确定活动主题是否具有<h1>帖子标题</h1>

时间:2010-11-08 作者:Scott B

我的插件需要知道当前活动的主题是否将文章标题放在H1标题标记中?我正在寻找有关创建脚本的方法的建议,以识别这一点。

更新:该插件评估帖子内容的SEO配置文件,以帮助用户改进搜索排名。h1标签是SEO最重要的标签之一,仅次于帖子标题。然而,我不想要求用户在帖子内容的h1标题标记中包含他们的主要关键字,如果主题已经这样做了(就像很多人那样)。

2 个回复
最合适的回答,由SO网友:fuxia 整理而成

Send an HTTP request 转到页面并搜索response body 对于</h1>. 看见this Gist 举个例子。

将结果存储在选项中,并在用户切换主题时删除此选项(挂钩到动作中switch_theme).

SO网友:Jan Fabry

你永远无法确定,但你可以使用启发式来做出有根据的猜测。你说的是单帖页面还是列表?一些小部件还列出了帖子标题,我想你不在乎边栏吧?

此外,您不知道是否是写在中的标题<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 筛选,以便知道将包含哪个模板文件。分析此文件,查找上面的模式。如果找到它,请设置一个变量nulltrue. 如果找不到,请将其设置为false. 缓存结果,因为这可能是一个昂贵的操作,而且模板不会经常更改。

在包含模板之前,您不会知道结果,但我假设您将更改the_title() 根据结果?在这种情况下,你不需要那么早就知道。

结束

相关推荐