在商业中获取附加到产品的所有“活动”属性分类?

azpvetkf  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(452)

我想得到所有附加在产品上的“活动”属性列表,
因此,如果属性存在,但不附加到任何产品,则不显示。
我可以将所有属性显示为下拉列表,如下所示:

$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>';
}

但这样我得到了所有属性,即使是非活动属性也没有附加。
如何将所有活动产品属性分类法附加到商业中的产品?

wrrgggsh

wrrgggsh1#

要获取所有活动产品属性分类(至少附加到一个产品),您需要一个自定义的简单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
    " );
}

代码放在活动子主题(或活动主题)的functions.php文件中。测试和工作。
用法(基于代码):
只需替换:

$attributes = wc_get_attribute_taxonomies();

签署人:

$attributes = wc_get_active_attribute_taxonomies();

注意:这个查询输出还包括“taxonomy”参数。

相关问题