Woocommerceでは、グローバルな製品属性と用語を追加できます。たとえば:
Size (attribute)
small (term)
medium (term)
large (term)
これは製品に依存しません。次に、製品の事前定義された属性から選択できます。
PHPで属性のすべての用語を取得する必要があります。したがって、必要な属性(サイズなど)を選択し、[small,medium,large]
を含む配列を返します。
十分にシンプルに思えますが、これを行うためのヘルプを見つけることができません。
用語/属性のリストを取得することについてはまったく言及されていないため、特にWooCommerceドキュメントを確認するときは少し混乱します。
属性はカスタム分類として保存され、用語は分類用語です。つまり、ネイティブWordpress関数: Wordpress get_terms()関数リファレンス を使用できます。
WooCommerceの属性をクリックすると、URLを確認でき、すべて先頭に「pa_」が付加されていることがわかります。
これはおそらくあなたが必要とするものです:
$terms = get_terms("pa_size");
foreach ( $terms as $term ) {
echo "<option>" . $term->name . "</option>";
}
設定されたバックエンドからすべてのさまざまな属性を取得し、それらを配列で取得して操作できるようにしたいので、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;
これは、すべての属性分類法をループし、それぞれの用語を取得します。各分類法で使用できる用語オブジェクトの配列が残ります。
私はこれを使います:
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']をループするという考え方です。