web-dev-qa-db-ja.com

WooCommerce-カスタム商品属性を取得

Woocommerceで特定のカスタム属性を取得しようとしています。私はこのサイトでそれを行う方法を約3-5の方法を提供するたくさんのスレッドを読みました。すべてを試した後、私のために機能した唯一の方法は、すべての属性をループすることです-他のすべては機能しませんでした。 'pdfs'という名前のカスタム属性があります

次の試行は機能しませんでした:リンク

 $global product;
 $myPdf = array_shift( wc_get_product_terms( $product->id, 'pdfs', array( 'fields' => 'names' ) ) );

 $myPdf = $product->get_attribute( 'pdfs' );

 $myPdf = get_post_meta($product->id, 'pdfs', true);

これは機能した唯一のものです:リンク

 $attributes = $product->get_attributes();
 foreach ( $attributes as $attribute ) {
    if (attribute_label( $attribute[ 'name' ] ) == "pdfs" ) {
        echo array_shift( wc_get_product_terms( $product->id,  $attribute[ 'name' ] ) );
    }
}

私はむしろ最初のオプションの1つを使用できるようにしたいと思います。助けていただければ幸いです。
ありがとう

5
DaveyD

更新:Woocommerce3 +の互換性を追加

DBでは属性は常にpa_で始まるため、wc_get_product_terms()関数で属性を取得するためにpdfsの代わりにpa_pdfsを使用する必要があります。

global $product;

$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id; // Added WC 3+ support

$myPdf = array_shift( wc_get_product_terms( $product_id, 'pa_pdfs', array( 'fields' => 'names' ) ) );

参照: WooCommerceから製品のカスタム属性を取得する方法

7
LoicTheAztec