我正在更新我的一个插件,很难找到构建特定功能的“最佳方法”。该插件允许用户将媒体库中的图像与任何分类法的任何术语相关联。我目前正在创建用户可以添加到主题和插件中的函数,以获取插件存储的数据。到目前为止,我的代码可以在这里查看:https://github.com/mfields/Taxonomy-Images/blob/master/public-filters.php
此文件中提供的功能允许用户获取当前正在查询的术语的图像(用于分类归档视图),另一个功能基本上是核心功能的包装器get_terms()
它将返回给定分类法的所有术语,同时将图像id添加到每个术语对象。在发布之前,我想在文件中添加第三个函数。这将是get_the_terms()
并将返回与具有图像的全局post对象关联的所有术语。
我在考虑建模get_the_terms()
函数之后get_terms()
具有内置图像文件缓存的函数。但我有点担心在任何存档模板的循环中使用此函数时会发生什么。
基本上工作流是这样的:
获取所有图像/术语关联(0个查询)获取与全球帖子相关的术语:get_the_terms()
(0个查询)查询与术语关联的所有图像(3个查询)。通过创建所有图像ID的列表并将其传递给get_posts()
通过include
参数在单视图(single.php、page.php等)中这样做很好,但是如果用户在归档视图的循环中使用此函数,会发生什么情况?您需要乘以3个查询(由get_posts()
) 按每页帖子设置的值(默认WordPress安装中为10)。现在我们总共有30个查询。它变得有点丑陋快!尤其是如果用户希望显示来自多个分类的图像。每个帖子2个分类法将增加WordPress需要做的60个!
基本上有一些前进的道路,我想知道在这种情况下你会怎么做。
根本不构建功能。
构建该函数并告知用户,如果用户在存档视图中使用get\\u the\\u terms(),则应安装缓存插件。
构建函数+创建另一个函数,该函数将在加载存档模板之前缓存所有图像。这个过程将涉及如下内容:在$posts
已生成数组(但在加载模板之前),循环遍历数组中的所有帖子,为每个公共分类法每次迭代调用get\\u the\\u terms()。所有术语对象的输出将存储在一个新数组中。然后,我可以确定哪些图像与每个分类法的每个术语相关联,并将图像ID传递给get_posts()
一枪射中。这将允许缓存所有图像信息,以便在模板中使用3个查询,而不是30、60或90个查询。
IMHO 3似乎是一种合乎逻辑的方式,但我不确定它是否是一种反优化。
请让我知道你对此的想法!