web-dev-qa-db-ja.com

woocommerceは属性用語を取得します

Woocommerceでは、グローバルな製品属性と用語を追加できます。たとえば:

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

これは製品に依存しません。次に、製品の事前定義された属性から選択できます。

PHPで属性のすべての用語を取得する必要があります。したがって、必要な属性(サイズなど)を選択し、[small,medium,large]を含む配列を返します。

十分にシンプルに思えますが、これを行うためのヘルプを見つけることができません。

17
phantomdentist

用語/属性のリストを取得することについてはまったく言及されていないため、特にWooCommerceドキュメントを確認するときは少し混乱します。

属性はカスタム分類として保存され、用語は分類用語です。つまり、ネイティブWordpress関数: Wordpress get_terms()関数リファレンス を使用できます。

WooCommerceの属性をクリックすると、URLを確認でき、すべて先頭に「pa_」が付加されていることがわかります。

これはおそらくあなたが必要とするものです:

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

設定されたバックエンドからすべてのさまざまな属性を取得し、それらを配列で取得して操作できるようにしたいので、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;

これは、すべての属性分類法をループし、それぞれの用語を取得します。各分類法で使用できる用語オブジェクトの配列が残ります。

12
Nick

4.5.0以降、分類は$ args配列の「taxonomy」引数を介して渡す必要があります。

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

たとえば、分類スラッグが「日付」の場合、分類は「pa_date」になります。属性名の上にマウスを置くと、ブラウザの下部に分類名が表示されます。

enter image description here

お役に立てば幸いです。

3
michelmany

私はこれを使います:

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')」と実際に検索すると、1つの用語しか検索されませんが、その関数を返すキー['name']をループするという考え方です。

3
user2985804