Sql 提取与WooCommerce中的类别关联的品牌列表

Sql 提取与WooCommerce中的类别关联的品牌列表,sql,wordpress,woocommerce,Sql,Wordpress,Woocommerce,在woocommerce中,我的产品被划分为一个(或多个)类别(product_cat),并且具有品牌属性(pa_marque),并且只属于一个品牌 我正试图提取与某个类别相关的品牌列表 通过对term_关系、term_分类法、terms和posts表进行SQL连接(这可能不是最好的解决方案),我得到如下结果: {"post_id":"23391","term_taxonomy_id":"1217","ta

在woocommerce中,我的产品被划分为一个(或多个)类别(product_cat),并且具有品牌属性(pa_marque),并且只属于一个品牌

我正试图提取与某个类别相关的品牌列表

通过对term_关系、term_分类法、terms和posts表进行SQL连接(这可能不是最好的解决方案),我得到如下结果:

{"post_id":"23391","term_taxonomy_id":"1217","taxonomy":"product_cat","taxonomy_parent":"0"},
{"post_id":"23391","term_taxonomy_id":"1219","taxonomy":"product_cat","taxonomy_parent":"1217"},
{"post_id":"23391","term_taxonomy_id":"1943","taxonomy":"pa_marque","taxonomy_parent":"0"}
(即产品23391有两个产品类别和一个品牌…但我真的不知道如何继续…)

你有什么线索吗?

我找到了答案代码,并对代码做了一些小改动,如下所示:

// Inspired by https://stackoverflow.com/a/61624358/1256770
function get_taxovalues_in_another_taxo_from_a_product_categories($taxonomy_tofind, $taxonomy_known, $cat_term_slug)
{
    global $wpdb;
    $results = $wpdb->get_results("
    SELECT DISTINCT
        t1.*
     FROM    {$wpdb->prefix}terms t1
        INNER JOIN {$wpdb->prefix}term_taxonomy tt1
            ON  t1.term_id = tt1.term_id 
        INNER JOIN {$wpdb->prefix}term_relationships tr1
            ON  tt1.term_taxonomy_id = tr1.term_taxonomy_id
        INNER JOIN {$wpdb->prefix}term_relationships tr2
            ON  tr1.object_id = tr2.object_id
        INNER JOIN {$wpdb->prefix}term_taxonomy tt2
            ON  tr2.term_taxonomy_id = tt2.term_taxonomy_id         
        INNER JOIN {$wpdb->prefix}terms t2
            ON  tt2.term_id = t2.term_id
    WHERE
        tt1.taxonomy = '$taxonomy_tofind'
        AND tt2.taxonomy = '$taxonomy_known'
        AND  t2.slug = '$cat_term_slug'
    ORDER BY t1.name
    ");

    $return = [];
    if (!empty($results)) {
        $term_names = [];
        foreach ($results as $result) {
            $term_link = get_term_link(get_term($result->term_id, $taxonomy_tofind), $taxonomy_tofind);
            $term_names[] = '<a class="' . $result->slug . '" href="' . $term_link . '">'
                . $result->name . '</a>';
        }
        $return = $term_names;
    }
    return $return;
}
// searching 'pa_marque' associated to product_cat "aiguilles-et-crochets"
$brands = get_taxovalues_in_another_taxo_from_a_product_categories('pa_marque', 'product_cat', 'aiguilles-et-crochets');
print(implode(" - ", $brands));

// searching 'pa_epaisseur-laine' associated to product_cat "laines"
$brands = get_taxovalues_in_another_taxo_from_a_product_categories('pa_epaisseur-laine', 'product_cat', 'laines');
print(implode(" - ", $brands));
//灵感来自https://stackoverflow.com/a/61624358/1256770
函数get_taxovalues_in_other_taxo_from_a_product_categories($taxonomy_tofind,$taxonomy_known,$cat_term_slug)
{
全球$wpdb;
$results=$wpdb->get_results(“
选择不同的
t1*
来自{$wpdb->prefix}术语t1
内部联接{$wpdb->prefix}term_分类tt1
在t1.term\u id=tt1.term\u id上
内部联接{$wpdb->prefix}term_关系tr1
在tt1.term\u taxonomy\u id=tr1.term\u taxonomy\u id上
内部联接{$wpdb->prefix}term_关系tr2
在tr1.object\u id=tr2.object\u id上
内部联接{$wpdb->prefix}term_分类tt2
关于tr2.term\u taxonomy\u id=tt2.term\u taxonomy\u id
内部联接{$wpdb->prefix}terms t2
在tt2.term\u id=t2.term\u id上
哪里
tt1.taxonomy='$taxonomy\u-tofind'
和tt2.taxonomy='$taxonomy\u known'
t2.slug=“$cat\u term\u slug”
按t1.name排序
");
$return=[];
如果(!空($results)){
$term_names=[];
foreach($results作为$result){
$term\u link=get\u term\u link(get\u term($result->term\u id,$taxonomy\u-tofind),$taxonomy\u-tofind);
$term_name[]='';
}
$return=$term\u name;
}
return$return;
}
//搜索与产品“aiguilles et钩针”相关的“品牌”
$brands=从产品类别(“品牌”、“产品”、“猫”、“蓝宝石和钩针”)中获取另一个产品的税收价值;
打印(内爆(“-”,$brands));
//搜索与产品类别“laines”相关的“pa_epaisseur-laine”
$brands=从产品类别(“PAU epaisseur-laine”、“product\U cat”、“laines”)中获取另一个税务价值;
打印(内爆(“-”,$brands));

现在,由于您已经有了足够的声誉,如果您喜欢/想要,您可以请您提供启发您答案代码的原始答案,谢谢。