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

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

有帮助吗?

解决方案

发送HTTP请求 到页面并搜索 响应主体 为了 </h1>. 。看 这个要点 例如。

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

其他提示

你永远无法确定,但你可以使用启发法做出有根据的猜测。您只谈论单个帖子页面,还是也谈论列表?有些小部件还列出了帖子标题,我想您不关心侧边栏?

另外,你也不知道是不是标题写的 <h1> 标签。如果你看到 <h1>{$title}</h1>, ,是帖子标题还是网站名称,还是完全不同的东西?

我会将问题简化为:当前主模板文件(即 包含于 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() 根据结果​​?既然如此,你就不需要那么早知道。

许可以下: CC-BY-SA归因
scroll top