Php 按标签和类别列出的Wordpress过滤器产品
我正在做一个wordpress的小爱好项目,我遇到了一点小麻烦。我已经实现了WooCommerce,并且正在为我的数据使用类别和标记 我有一些我知道的相关条目,因此,例如,数据模型如下:Php 按标签和类别列出的Wordpress过滤器产品,php,mysql,wordpress,Php,Mysql,Wordpress,我正在做一个wordpress的小爱好项目,我遇到了一点小麻烦。我已经实现了WooCommerce,并且正在为我的数据使用类别和标记 我有一些我知道的相关条目,因此,例如,数据模型如下: 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
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) ));
汽车#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) ));
当我使用或处理更多数据时,查询会给我正确的结果,然后我得到的结果只满足一个条件,而这一条件不能很好地工作。我认为问题在于,每个帖子只获取一个分类行,所以当我使用AND(在where条件中)而不是OR(在上面的查询中)时,它不起作用
是否有人知道此问题的解决方案或遇到过类似问题?或者,是否有更好的方式来组织产品
谢谢 使用
WP\u Query
和tax\u Query
并在那里定义和关系以获得正确的查询。例如,在你的情况下,像这样的事情可能会起作用
$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 );
有关更多信息,请参阅。祝你好运 使用WP\u Query
和tax\u Query
并在那里定义和关系以获得正确的查询。例如,在你的情况下,像这样的事情可能会起作用
$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 );
有关更多信息,请参阅。祝你好运