获取WooCommerce中所有附加在产品上的 "活跃 "属性分类法?

问题描述 投票:1回答:1

我想获得所有 "活动 "属性列表,附加到产品。

所以,如果属性存在,但不附加到任何产品上就不显示。

我可以像这样以下拉方式显示所有属性。

$attributes =  wc_get_attribute_taxonomies();

if($attributes) {
    echo '<select name="all-attributes" id="all-attributes">';
    foreach ( $attributes as $attribute ) {
        echo '<option value="' . $attribute->attribute_name . '">' . $attribute->attribute_label . '</option>';
    }
    echo '</select>';
}

但这样我就得到了所有的属性,甚至是没有附加的非活动属性。

如何获取所有 积极 在WooCommerce中,产品属性分类法附加到产品上?

php sql wordpress woocommerce custom-taxonomy
1个回答
1
投票

要获得所有 积极 产品属性分类法 (附在产品上) 你将需要一个自定义的简单SQL查询,如下所示 (嵌入到一个php函数中):

function wc_get_active_attribute_taxonomies() {
    global $wpdb;

    return $wpdb->get_results( "
        SELECT DISTINCT  wat.*, tt.taxonomy
        FROM {$wpdb->prefix}woocommerce_attribute_taxonomies wat
        INNER JOIN {$wpdb->prefix}term_taxonomy tt
            ON tt.taxonomy = CONCAT('pa_', wat.attribute_name)
        INNER JOIN {$wpdb->prefix}term_relationships tr
            ON tt.term_taxonomy_id = tr.term_taxonomy_id
        WHERE tt.count > 0
    " );
}

代码在您的活动子主题(或活动主题)的function.php文件中。经过测试,可以使用。


使用方法 (根据你的代码):

替换就好。

$attributes = wc_get_attribute_taxonomies();

改为:

$attributes = wc_get_active_attribute_taxonomies();

注:该查询输出还包括 "分类学 "参数。 该查询输出还包括 "分类学 "参数。

© www.soinside.com 2019 - 2024. All rights reserved.