通过将多个值相加进行排序

时间:2019-01-19 作者:Christopher

在自定义post类型(产品)中,我希望根据用户选择对多个值求和来订购产品。我使用自定义分类法来过滤产品。

我可以用orderbymeta_value 但是用户可以进行的组合太多了,所以不可能将所有这些总数存储为post-meta。

我想我需要使用如下过滤器更改wp查询posts_clauses. 自定义SQL查询能否有效地处理此问题(或者可能是另一种方法)?

这是一个自定义设置,所以我不介意如何存储值。可以作为post meta,在自定义表中,甚至可以作为post_content 字段(我不使用它)。

1 个回复
SO网友:Krzysiek Dróżdż

我不会为此使用分类法或自定义字段。每次为查询添加一个自定义字段时,都必须为该查询添加一个联接部分-这意味着使用10-15个自定义字段,您将获得10-15个联接的查询-因此这种查询将非常缓慢。

但在这种情况下,你可以使用一些很好的技巧。我会这样做:

创建自定义DB表,为sum中可以包含的每个属性创建一列。(因此应该有一个外键post_id 这将允许您将此表与posts表联接,然后为每个属性联接一列—所以basic_cost, extra_cost, extra_cost_2 等等——或者不管你的财产是什么……)这样,您就可以在求和中使用这些列,而查询只需要一个联接使用save_post 钩子用元值填充该表使用posts_clauses 钩子连接自定义表,并根据该表中的字段按所需的总和排序

相关推荐

将wp_Query替换为wp_User_Query

我在插件中制作了一些订阅者档案和单曲(个人资料页),其中我还包括了一个“用户单曲”模板,通过template_include. 不过,我正在尝试从插件中删除一些模板,以使其使用主题模板。我用了locate_template( \'single.php\' ) 从活动主题中选择单个模板。我没有使用全局wp_query 在本例中显示我的内容,但页面显示了基于查询默认值的循环(十篇帖子)。我想知道的是,我是否可以完全放弃默认查询,用wp_user_query 我可以将查询到的用户ID输入其中。然后我想筛选the