另一个better, 要做到这一点,可以做两件不同的事情:
查找在wordpress SEO中运行这些查询的过滤器并将其删除查看它们收集的数据以显示在帖子列表中,并使用posts\\u join和posts\\u字段过滤器将它们通过各自的查询收集的数据添加到正在运行的查询中以生成帖子列表例如,您显示的查询:
SELECT t.*, tt.* FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id
INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy IN (\'post_tag\') AND tr.object_id IN (37336)
ORDER BY t.name ASC
这个查询是为了某种目的而收集term\\u分类法和term\\u关系条目(很可能显示哪些帖子对他们做过seo类型的事情)。
如果您明确了要查找的内容,那么您可以提出适当的查询段进行修改,以提取每个帖子所需的内容。
如果您可以这样做,只需在结果列表中为每篇文章添加多个字段,而无需让文章列表为每篇文章返回多个记录,那么您也可以删除它们的显示过滤器,让它从当前文章中简单地提取字段。
这将基本上删除WP SEO插入的所有额外查询,并让您几乎无需额外工作即可获得它们显示的数据(只需从数据库中选择两个额外字段)。
如果他们为每篇文章使用序列化数组,您可能需要执行以下操作:
posts_join
附加如下内容
LEFT JOIN (post_meta) ON (post_meta.post_id = post.ID)
posts_fields
附加如下内容
(post_meta.meta_value) AS seo_meta
然后删除列上的过滤器,添加您自己的过滤器,只需取消seo\\U元值的序列化并提取适当的数据。
如果它们不使用序列化数组,那么您只需进行一些额外的左连接(如果不存在,则会将seo\\u meta设置为null)和一些额外的字段名。
我实际上在我的一些插件中这样做,并通过以下内容(以及挖掘一些源代码)跟踪了我需要做的所有细节:
Notes:
<如果执行上述操作,请确保在获取相应屏幕的项目列表时,使用is\\u admin()和适当的其他检查来修改仅在管理端的查询