繁体   English   中英

获取 WooCommerce 中产品的所有“活跃”属性分类法?

[英]Get all “active” attributes taxonomies attached to products in WooCommerce?

我想获取附加到产品的所有“活动”属性列表,

因此,如果该属性存在,但不附加到任何产品不显示。

我可以像这样将所有属性显示为下拉列表:

$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 中产品的所有活动产品属性分类法?

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

注意:此查询 output 还包括“分类”参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM