如何让动态生成的内容在WordPress中可搜索?

时间:2011-04-06 作者:Doug Paul

我正在为WordPress编写一个插件,它可以从Google文档电子表格中动态生成内容。具体来说,该插件提供了一个快捷代码,可以生成一个好看的员工列表。这是可行的,但有两个问题:

使用快捷码的页面加载速度有点慢,因为它们必须向另一台服务器发出多个请求,因为内容是在加载页面时生成的,员工列表的内容不会显示在网站上的搜索结果中。我可以通过某种程度的缓存来解决第一个问题,但如何解决第二个问题?我提到第一个问题是因为我认为理想的解决方案是WordPress索引页面的缓存副本。

我能想到的另一个解决方案是让页面内容定期由插件组成。这样可以搜索页面,而不是每次都动态生成。然而,插件完全控制页面内容似乎是一个奇怪的范例。。。还有其他插件可以做到这一点吗?此外,这种方法向用户暴露了不必要的复杂性。(他们必须从插件页面而不是正常位置编辑页面内容。)

以下是页面标记部分的示例:

<h2>General Management</h2>

[staff-directory department="General Management"]
要命中的电子表格是单独配置的。“部门”指定工作表。(我会向您展示结果,但我没有足够的代表发布图像。)

非常感谢您的建议。

2 个回复
SO网友:Jan Fabry

这个wp_posts 表具有post_content_filtered 列,该列plugins can use to cache expensive post content filters. 这个想法是当你显示页面时,你不会阅读post_content 但你读过post_content_filtered. 这很好,但它不会解决您的搜索问题,因为WordPress默认情况下只查看post_contentpost_title.

但是,您可以使用另一种方法:将编辑器内容存储在post_content_filtered 和中的渲染页post_content (使用cron作业定期更新)。编辑帖子之前会调用一些过滤器,您可以使用它们来传递post_content_filtered 而不是post_content 给编辑。因此,用户将看不到任何差异,但性能和搜索体验将得到改善。

SO网友:petermolnar

我有两种看法

如果速度很重要,那么缓存可以解决这两个问题。如果您可以通过某种方式向缓存和数据检索url/get添加上次修改的时间戳,使用简单的哈希算法,您可以确保缓存的版本是最新的。

如果速度不是那么相关,您可以使用API请求电子表格。例如,您可能不需要PHP,而是可以使用JavaScript和JSON进行非常快速的搜索,如data retrieving in this example.

在你的位置上,我会坚持缓存数据,计算在搜索查询的那一刻谷歌文档是否不可用。

结束