web-dev-qa-db-fra.com

Woocommerce: Afficher la description de la variation du produit sur la page du panier

J'essaie d'afficher ma description de la variation du produit dans mon panier. J'ai essayé d'insérer ce code dans lecart.phptemplate:

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

En suivant cette documentation https://docs.woocommerce.com/document/template-structure/

Mais ça n'arrive toujours pas.

Pas sûr de ce que je fais mal ici. 

Quelqu'un peut-il aider à ce sujet? 

Merci

7
simplycity

COMPATIBILITÉ DE MISE À JOUR POUR WooCommerce version 3+

Depuis WooCommerce 3, get_variation_description() est maintenant obsolète et remplacé par la méthode WC_Productget_description() .

Pour obtenir la description de la variation de votre produit dans le panier (condition du type de produit de la variante de filtrage)}, vous avez 2 possibilités (peut-être encore plus…):

  1. Affichage de la description de la variante à l’aide dewoocommerce_cart_item_namehook, sans modification de modèle.
  2. Afficher la description de la variante à l’aide du modèle cart.php.

Dans les deux cas, vous n'avez pas besoin d'utiliser dans votre code une boucleforeach, comme indiqué précédemment, car elle existe déjà. Donc, le code sera plus compact.

Cas 1 - en utilisantwoocommerce_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;
}

Dans ce cas, la description est simplement affichée entre le titre et les valeurs des attributs de variation.

Ce code va dans le fichier function.php de votre thème enfant actif (ou de votre thème) ou également dans n'importe quel fichier plugin.


Cas 2 - Utilisation decart/cart.phptemplate ( Update selon votre commentaire)}.

Vous pouvez choisir où vous voulez afficher cette description (2 choix):

  • Après le titre
  • Après le titre et les attributs de variation, valeurs.

Vous allez donc insérer ce code dans le modèle cart.php autour de la ligne 86 ou 90 selon votre choix:

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

Tout le code est testé et entièrement fonctionnel

8
LoicTheAztec

Cela fonctionnera pour WC 3.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

Vous pouvez l'obtenir via la variable globale $woocommerce également-

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

Je vérifie déjà.

0
anik4e