web-dev-qa-db-ja.com

Woocommerce:カートページに商品バリエーションの説明を表示する

カートに商品バリエーションの説明を表示しようとしています。このコードをcart.phpテンプレートに挿入してみました:

if ( $_product->is_type( 'variation' ) ) {echo $_product->get_variation_description();}

このドキュメントに従うことによって https://docs.woocommerce.com/document/template-structure/

しかし、それはまだ現れていません。

ここで何が間違っているのかわかりません。

誰かがこれを手伝うことができますか?

ありがとう

7
simplycity

WooCommerceバージョン3+の互換性を更新

WooCommerce 3以降、 get_variation_description() は非推奨になり、_WC_Product_メソッドに置き換えられました- get_description()

カート内の商品アイテムバリエーションの説明を取得するには(バリエーション商品タイプ条件のフィルタリング)2つの可能性(さらに多いかもしれません…):

  1. テンプレートを編集せずに、_woocommerce_cart_item_name_フックを使用してバリエーションの説明を表示します。
  2. Cart.phpテンプレートを使用してバリエーションの説明を表示します。

どちらの場合も、前に回答したように、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;;
    }
}
_

すべてのコードがテストされ、完全に機能しています

8
LoicTheAztec

これは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;
}
3
Ger Groot

グローバル変数$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>';
    }
}

すでにチェックしています。

0
anik4e