gpt4 book ai didi

php - WordPress 按标签和类别过滤产品

转载 作者:行者123 更新时间:2023-11-29 07:09:40 25 4
gpt4 key购买 nike

我正在从事一个小型的 WordPress 爱好项目,但遇到了一些障碍。我已经实现了 WooCommerce,并为我的数据使用类别和标签。

我有一些我知道相关的条目,例如,数据模型如下:

1 号车:类别 => 轿车标签 => 沃尔沃

2号车:类别 => 轿车标签 => 沃尔沃

3 号车:类别 => 轿车标签 => 宝马

我正在尝试过滤这些 WooCommerce 产品,以确保标签和类别都匹配,因此在本例中,Car #1 与 Car #2 相关,而 Car #3 是孤儿车。

获取相关产品时生成的当前查询如下:

SELECT * FROM wp_posts p   
INNER JOIN wp_postmeta pm ON ( pm.post_id = p.ID AND pm.meta_key='_visibility' )
INNER JOIN wp_term_relationships tr ON (p.ID = tr.object_id)

INNER JOIN wp_term_taxonomy tt ON(tr.term_taxonomy_id = tt.term_taxonomy_id)
INNER JOIN wp_terms t ON (t.term_id = tt.term_id)
WHERE (( tt.taxonomy = 'product_cat' AND t.term_id IN ( 14 )))
OR (( tt.taxonomy = 'product_tag' AND t.term_id IN ( 44) ));

当我使用 OR 时,查询会给出正确的结果,但是当我使用更多数据时,我得到的结果仅满足一个条件,但效果不佳。我认为问题在于它只获取每个帖子的一个分类行,因此当我在上面的查询中使用 AND(在 where 条件下)而不是 OR 时,它不起作用。

有谁知道这个问题的解决方案或者遇到过类似的问题吗?或者是否有更好的方法来构建产品?

谢谢!

最佳答案

WP_Querytax_query 结合使用,并在其中定义 AND 关系以获得正确的查询。例如,在您的情况下,类似的事情可能会起作用;

$args = array(
'post_type' => 'product',
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'volvo' ),
),
array(
'taxonomy' => 'product_tag',
'field' => 'slug',
'terms' => array( 'sedan' ),
),
),
);
$query = new WP_Query( $args );

有关更多信息,请参阅WordPress Codex on WP_Query 。祝你好运!

关于php - WordPress 按标签和类别过滤产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40323034/

25 4 0