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 に答える
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 に答える