web-dev-qa-db-de.com

Woocommerce: Anzeige der Produktvariationsbeschreibung auf der Warenkorbseite

Ich versuche, meine Produktvariationsbeschreibung in meinem Warenkorb anzuzeigen. Ich habe versucht, diesen Code in die Vorlagecart.phpeinzufügen:

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

Durch Befolgen dieser Dokumentation https://docs.woocommerce.com/document/template-structure/

Aber es erscheint immer noch nicht.

Nicht sicher, was ich hier falsch mache. 

Kann mir jemand weiterhelfen? 

Vielen Dank

7
simplycity

AKTUALISIERUNG DER KOMPATIBILITÄT für WooCommerce Version 3+

Seit WooCommerce 3 ist get_variation_description() nun veraltet und wird durch die WC_Product-Methode get_description() ersetzt.

Um Ihre Produktartikel-Variationsbeschreibung im Einkaufswagen zu erhalten (Filtervariation Produktart Bedingung), haben Sie 2 Möglichkeiten (möglicherweise sogar mehr ...):

  1. Anzeige der Variationsbeschreibung mitwoocommerce_cart_item_namehook, ohne dass eine Vorlage bearbeitet werden muss.
  2. Anzeigen der Variationsbeschreibung mithilfe der Vorlage "cart.php".

In beiden Fällen müssen Sie in Ihrem Code keineforeachloop verwenden, da diese bereits vorhanden ist. Der Code wird also kompakter.

Fall 1 - mitwoocommerce_cart_item_namehook:

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;
}

In diesem Fall wird die Beschreibung nur zwischen den Attributwerten Titel und Variation angezeigt.

Dieser Code wird in die function.php-Datei Ihres aktiven untergeordneten Designs (oder Designs) oder auch in eine beliebige Plugin-Datei geschrieben.


Fall 2 - Verwenden voncart/cart.phptemplate ( Update gemäß Ihrem Kommentar).

Sie können auswählen, wo Sie diese Beschreibung anzeigen möchten (2 Auswahlmöglichkeiten):

  • Nach dem Titel
  • Nach dem Titel und den Variationsattributwerten.

Sie werden diesen Code je nach Ihrer Wahl in die cart.php-Vorlage in Zeile 86 oder 90 einfügen:

// 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;;
    }
}

Der gesamte Code wurde getestet und ist voll funktionsfähig

8
LoicTheAztec

Dies wird für WC 3.0 funktionieren

    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

Sie können es über die globale Variable $woocommerce erhalten.

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>';
    }
}

Ich überprüfe es schon.

0
anik4e