カートに商品バリエーションの説明を表示しようとしています。このコードをcart.php
テンプレートに挿入してみました:
if ( $_product->is_type( 'variation' ) ) {echo $_product->get_variation_description();}
このドキュメントに従うことによって https://docs.woocommerce.com/document/template-structure/
しかし、それはまだ現れていません。
ここで何が間違っているのかわかりません。
誰かがこれを手伝うことができますか?
ありがとう
WooCommerceバージョン3+の互換性を更新
WooCommerce 3以降、 get_variation_description()
は非推奨になり、_WC_Product
_メソッドに置き換えられました- get_description()
。
カート内の商品アイテムバリエーションの説明を取得するには(バリエーション商品タイプ条件のフィルタリング)、2つの可能性(さらに多いかもしれません…):
woocommerce_cart_item_name
_フックを使用してバリエーションの説明を表示します。どちらの場合も、前に回答したように、
foreach
ループはすでに存在するため、コードで使用する必要はありません。したがって、コードはよりコンパクトになります。
ケース1-_woocommerce_cart_item_name
_フックを使用:
_add_filter( 'woocommerce_cart_item_name', 'cart_variation_description', 20, 3);
function cart_variation_description( $name, $cart_item, $cart_item_key ) {
// Get the corresponding WC_Product
$product_item = $cart_item['data'];
if(!empty($product_item) && $product_item->is_type( 'variation' ) ) {
// WC 3+ compatibility
$descrition = version_compare( WC_VERSION, '3.0', '<' ) ? $product_item->get_variation_description() : $product_item->get_description();
$result = __( 'Description: ', 'woocommerce' ) . $descrition;
return $name . '<br>' . $result;
} else
return $name;
}
_
この場合、説明はタイトルとバリエーション属性値の間に表示されます。
このコードは、アクティブな子テーマ(またはテーマ)のfunction.phpファイル、または任意のプラグインファイルに含まれます。
ケース2-_cart/cart.php
_テンプレートの使用(更新コメントに従って)。
この説明を表示する場所を選択できます(2つの選択肢)。
したがって、選択に応じて、このコードをcart.phpテンプレートの86行目または90行目あたりに挿入します。
_// Get the WC_Product
$product_item = $cart_item['data'];
if( ! empty( $product_item ) && $product_item->is_type( 'variation' ) ) {
// WC 3+ compatibility
$description = version_compare( WC_VERSION, '3.0', '<' ) ? $product_item->get_variation_description() : $product_item->get_description();
if( ! empty( $description ) ) {
// '<br>'. could be added optionally if needed
echo __( 'Description: ', 'woocommerce' ) . $description;;
}
}
_
すべてのコードがテストされ、完全に機能しています
これはWC3.0で機能します
add_filter( 'woocommerce_cart_item_name', 'cart_variation_description', 20, 3);
function cart_variation_description( $title, $cart_item, $cart_item_key ) {
$item = $cart_item['data'];
if(!empty($item) && $item->is_type( 'variation' ) ) {
return $item->get_name();
} else
return $title;
}
グローバル変数$woocommerce
からも取得できます-
global $woocommerce;
$cart_data = $woocommerce->cart->get_cart();
foreach ($cart_data as $value) {
$_product = $value['data'];
if( $_product->is_type( 'variation' ) ){
echo $_product->id . '<br>';
}
}
すでにチェックしています。