woocommerce获得属性条款

时间:2013-05-01 17:15:31

标签: attributes e-commerce woocommerce product

在Woocommerce中,您可以添加全局产品属性和术语。例如:

Size (attribute)
small  (term)
medium (term)
large  (term)

这与产品无关。然后,您可以从产品上的预定义属性中进行选择。

我需要使用php获取属性中的所有术语。因此,选择所需的属性,例如大小,然后返回包含[small,medium,large]的数组。

看起来很简单但我找不到任何帮助。

5 个答案:

答案 0 :(得分:25)

稍微有些混乱,特别是在查看WooCommerce Docs时,因为完全没有提及获取术语/属性的列表。

属性保存为自定义分类,术语是分类术语。这意味着您可以使用原生Wordpress功能:Wordpress get_terms() Function Reference

通过点击WooCommerce中的某个属性,您可以查看该网址,然后您可以看到它们都附加了'pa _'

这可能是您所需要的:

$terms = get_terms("pa_size");
foreach ( $terms as $term ) {
echo "<option>" . $term->name . "</option>";
}

答案 1 :(得分:11)

我希望能够从设置的后端获取所有不同的属性,并将它们放在一个数组中供我使用,我从class-wc-admin-attributes.php文件中获取了一些代码,根据我的需要修改它:

$attribute_taxonomies = wc_get_attribute_taxonomies();
$taxonomy_terms = array();

if ( $attribute_taxonomies ) :
    foreach ($attribute_taxonomies as $tax) :
    if (taxonomy_exists(wc_attribute_taxonomy_name($tax->attribute_name))) :
        $taxonomy_terms[$tax->attribute_name] = get_terms( wc_attribute_taxonomy_name($tax->attribute_name), 'orderby=name&hide_empty=0' );
    endif;
endforeach;
endif;

var_dump($taxonomy_terms);

exit;

这将遍历所有属性分类法,检索每个属性的术语,为每个分类法留下一系列术语对象。

答案 2 :(得分:3)

我用这个:

echo '<h1>variations</h1>';
mario( $product->get_available_variations());
echo '<h1>Atributos</h1>';
mario($product->get_attributes());
echo '<h1>Poste Terms</h1>';
mario(wp_get_post_terms( $post->ID, 'pa_color'));


function mario($texto){
    echo '<pre>';var_dump($texto);echo '</pre>';
};

真的:“wp_get_post_terms($ post-&gt; ID,'pa_color')”我只搜索一个术语,但想法是循环返回该函数的键['name']。

答案 3 :(得分:2)

从4.5.0版开始,分类应通过$ args数组中的“分类”参数传递:

$terms = get_terms( array(
    'taxonomy' => 'pa_taxonyname',
    'hide_empty' => false,
) );

例如,如果分类标准标签为“ date”,则分类标准将为“ pa_date”。 您也可以将鼠标悬停在属性名称上,然后在浏览器底部看到分类名称。

enter image description here

希望对您有帮助!

答案 4 :(得分:0)

获取 woocommerce 中带有属性词的所有属性。

$attributes = wc_get_attribute_taxonomies();
foreach ($attributes as $attribute) {
    $attribute->attribute_terms = get_terms(array(
        'taxonomy' => 'pa_'.$attribute->attribute_name,
        'hide_empty' => false,
    ));
}