我可以使用PRE_GET_POST将来自两个不同元键的值相加吗?

时间:2016-06-05 作者:Marc Dingena

我正在存储post meta值_likes_dislikes 在里面postmeta. 在某些情况下,我希望能够根据帖子的净得分(喜欢减去不喜欢)来查询帖子,并按其排序。

我熟悉按元数据查询和排序帖子,但我不确定是否可以在pre_get_posts. 我觉得我需要创造一个新的WP_Query 对象,但我确实不希望转储当前查询对象。

Is it possible to alter the already existing query object in the pre_get_posts action to do simple arithmetic operations on meta values?

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

你尝试的方式可能是错误的。

WP_Query 没有任何内置功能从两个自定义字段中减去值,然后根据两个字段的减去值返回(或排序)帖子。您可能可以通过posts_clauses filter或相关的单子句筛选以引入您想要的功能。

我可能不会走这条路,因为复杂的SQL查询(如您需要的查询)可能会变得非常昂贵,执行速度非常慢,特别是随着数据库的增长。您可能希望编写一个一次性脚本,该脚本将接收所有帖子,计算两个自定义字段之间的差异,并将该差异保存在另一个(可能隐藏)自定义字段中。正如我所说,这将是一个一次性的脚本,一旦完成,您将删除它。

然后,只需编写另一个脚本,当其他两个自定义字段中的任何一个被更新时,该脚本会自动更新第三个自定义字段,并使用其他两个自定义字段的差异。为此,您可以查看以下操作updated_post_meta参见this answer)。

这样就可以通过第三个自定义字段轻松地查询(或订购)您的帖子,而无需任何额外的筛选、操作或其他操作

相关推荐