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つを使用できるようにしたいと思います。助けていただければ幸いです。
ありがとう
更新: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' ) ) );