J'essaie d'afficher ma description de la variation du produit dans mon panier. J'ai essayé d'insérer ce code dans lecart.php
template:
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
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_Product
get_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…):
woocommerce_cart_item_name
hook, sans modification de modèle.Dans les deux cas, vous n'avez pas besoin d'utiliser dans votre code une boucle
foreach
, comme indiqué précédemment, car elle existe déjà. Donc, le code sera plus compact.
Cas 1 - en utilisantwoocommerce_cart_item_name
hook:
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.php
template ( Update selon votre commentaire)}.
Vous pouvez choisir où vous voulez afficher cette description (2 choix):
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
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;
}
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à.