22

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

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

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

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

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

4

5 回答 5

38

有点令人困惑,尤其是在查看 WooCommerce 文档时,因为绝对没有提到获取术语/属性列表。

属性保存为自定义分类,术语为分类术语。这意味着您可以使用原生 Wordpress 函数:Wordpress get_terms() 函数参考

通过单击 WooCommerce 中的属性,您可以查看 URL,您可以看到它们都以“pa_”开头

这可能是您需要的:

$terms = get_terms("pa_size");
foreach ( $terms as $term ) {
echo "<option>" . $term->name . "</option>";
}
于 2013-06-07T18:45:51.053 回答
18

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

<?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;

这将遍历所有属性分类法,检索每个分类法的术语,为您留下一组术语对象以用于每个分类法。

于 2014-04-28T17:02:52.627 回答
7

从 4.5.0 开始,分类法应该通过 $args 数组中的 'taxonomy' 参数传递:

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

例如,如果分类 slug 是“日期”,那么分类将是“pa_date”。您还可以将鼠标悬停在属性名称上并在浏览器底部查看分类名称。

在此处输入图像描述

我希望它有帮助!

于 2018-10-12T11:59:21.590 回答
5

我用这个:

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->ID,'pa_color')”我只搜索一个词,但想法是循环查找返回该函数的键 ['name']。

于 2013-11-13T02:19:33.690 回答
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,
    ));
}
于 2021-02-24T03:47:01.880 回答