在自定义post类型(产品)中,我希望根据用户选择对多个值求和来订购产品。我使用自定义分类法来过滤产品。
我可以用orderbymeta_value
但是用户可以进行的组合太多了,所以不可能将所有这些总数存储为post-meta。
我想我需要使用如下过滤器更改wp查询posts_clauses
. 自定义SQL查询能否有效地处理此问题(或者可能是另一种方法)?
这是一个自定义设置,所以我不介意如何存储值。可以作为post meta,在自定义表中,甚至可以作为post_content
字段(我不使用它)。
SO网友:Krzysiek Dróżdż
我不会为此使用分类法或自定义字段。每次为查询添加一个自定义字段时,都必须为该查询添加一个联接部分-这意味着使用10-15个自定义字段,您将获得10-15个联接的查询-因此这种查询将非常缓慢。
但在这种情况下,你可以使用一些很好的技巧。我会这样做:
创建自定义DB表,为sum中可以包含的每个属性创建一列。(因此应该有一个外键post_id
这将允许您将此表与posts表联接,然后为每个属性联接一列—所以basic_cost
, extra_cost
, extra_cost_2
等等——或者不管你的财产是什么……)这样,您就可以在求和中使用这些列,而查询只需要一个联接使用save_post
钩子用元值填充该表使用posts_clauses
钩子连接自定义表,并根据该表中的字段按所需的总和排序