Php 按标签和类别列出的Wordpress过滤器产品

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

我正在做一个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 = 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 );
有关更多信息,请参阅。祝你好运