更新(著者のコメントに関連):
WooCommerce cart.phpをカスタマイズして、製品ページでEssential Gridプレミアムプラグインを使用して正常に動作しているメタデータを表示したいと思います。
メタフィールドクリエーターエッセンシャルグリッド プラグインで作成したいくつかの製品属性フィールドとカスタムメタフィールドを表示したいと思います。
テストのために、私は'Height'
属性(そう'pa_height'
)とカスタムフィールド'Age'
を使用しています=どのスラッグか'eg-age-cal'
。
現在、私は以下を使用してみました:
<?php echo get_post_meta($product_id, 'pa_height', true );?>
そしてまた:
<?php echo get_post_meta($product_id, 'eg-age-cal', true );?>
しかし、これらは動作しないようです。
私は何とかしてコードを機能させることができました:
<?php echo get_post_meta($product_id, '_regular_price', true );?>
したがって、コードが機能していることがわかります。
これらのカスタム属性とカスタムフィールドから値を取得するにはどうすればよいですか。
ありがとう。
更新(WC 3+との互換性)
以下のコメントで説明した後、 Essential Gridプレミアムプラグイン(商用プラグイン)を使用していくつかのカスタムフィールドと属性を作成していることに気づきましたあなたのwooCommerce製品に関連しています。
この時点では、I't ca n't helpです。これは、このプラグインを以前に使用したことがなく、このプラグイン内のデータベースのどこにデータが保存されているかわからないためです。
通常のWordPress/WooCommerce関数を使用してこのデータを取得することはできないと思います。これが通常どおりget_post_meta()
を使用してデータを取得しない…の理由です。
助けられる最良の方法は:
-データベースでそのカスタムフィールドデータを検索/探索します。
-検索/質問Essential Gridプラグイン作成者はスレッドをサポートします。
私の元の答え:
製品で定義されている属性の場合、get_post_meta()
関数を_$product_id
_変数とともに使用する場合は、この方法で必要なデータを取得します(これは値の配列です)。
_// getting the defined product attributes
$product_attr = get_post_meta( $product_id, '_product_attributes' );
// displaying the array of values (just to test and to see output)
echo var_dump( $product_attr );
_
関数get_attributes()
(より推奨)を次のように使用することもできます。
_// Creating an object instance of the product
$_product = new WC_Product( $product_id );
// getting the defined product attributes
$product_attr = $_product->get_attributes();
// displaying the array of values (just to test and to see output)
echo var_dump( $product_attr );
_
すべてのコードがテストされ、機能しています。
NOW CART DATA IS SET IN COOKIES AND SESSIONSそしてカートデータを取得するには
WC()->cart
構文を使用する必要がありますとアイテム
したがって、次の種類のコードを使用してカート内のアイテム(製品)を取得できます。
_foreach ( WC()->cart->get_cart() as $cart_item ) {
$product = $cart_item['data'];
if(!empty($product)){
// getting the defined product attributes
$product_attr = $_product->get_attributes();
// displaying the attributes array of values (just to test and to see output)
echo var_dump( $product_attr ) . '<br>';
}
}
_
これにより、CART内の各製品の値の属性配列が表示されます。
ソリューションこのスレッド に基づいて、同じコードスニペット内でwc_get_product_terms()
を使用して取得しますあなたの属性:
_foreach ( WC()->cart->get_cart() as $cart_item ) {
$product = $cart_item['data'];
if(!empty($product)){
// compatibility with WC +3
$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;
// Getting "height" product attribute
$myAttribute = array_shift( wc_get_product_terms( $product_id, 'pa_height', array( 'fields' => 'names' ) ) );
echo $myAttribute . '<br>';
}
}
_
参照: