2017-08-23 8 views
0

Wordpress> WooCommerce> One Page CheckoutWooCommerce une page de commande ne présente pas des attributs ou des variations

Sur un seul produit avec une page de commande activée, j'ai 3 variantes d'un attribut:

Product Variations Dashboard

Lorsqu'une variation est choisie et ajoutée à l'ordre, l'une page de commande affiche le nom du produit, mais ne comprend pas la variation:

One Page Checkout - No Variations Displayed

Les variantes SONT affichées dans le panier complet, mais ne le sont pas lorsqu'une page est utilisée. Lorsqu'un client commande plusieurs variantes, cela peut être source de confusion pour lui. Je voudrais simplement afficher la variation que le client a choisi avec le nom du produit en utilisant One Page Checkout.

Quelqu'un peut-il aider? PS: Je m'excuse si c'est le mauvais endroit pour publier. Je suis nouveau dans la communauté, j'ai pris seulement 1 cours en PHP et CSS, et j'ai cherché Google et Stack pour une réponse. En espérant que quelqu'un puisse aider. Merci d'avance! :)

+0

Il y a un changement dans 3.x WooCommerce qui semble retirer l'information de variation des données de l'élément de panier et nécessitent des plugins et des thèmes à utiliser get_name() au lieu de get_title() pour obtenir un titre de produit inclut les informations de variation. Peut-être que One Page Checkout n'a pas été mis à jour pour refléter ce changement? – Jake

Répondre

1

Dans WooCommerce 2.x, les attributs de variation étaient affichés dans le panier en tant que métadonnées, mais dans WooCommerce 3.x, ils sont inclus dans le nom du produit. Mais cela nécessite une modification de toute personnalisation de panier dans un plugin ou un thème pour utiliser la nouvelle méthode WC_Productget_name() au lieu de get_title(). S'il s'agit d'un plugin ou d'un thème tiers, vous devriez idéalement savoir si une nouvelle version est entièrement compatible avec WooCommerce 3.x et corrige le problème. Mais comme une solution de contournement, en supposant que le plugin/thème utilise le crochet de filtre woocommerce_cart_item_name, vous pouvez ajouter ce qui suit au functions.php de votre thème (si vous utilisez un thème tiers, vous devez create a child theme pour ne pas perdre vos modifications lors de la mise à jour):

add_filter(
    'woocommerce_cart_item_name', 
    function($name, $cart_item, $cart_item_key) { 
    $product = apply_filters(
     'woocommerce_cart_item_product', 
     $cart_item['data'], 
     $cart_item, 
     $cart_item_key 
    ); 
    if (method_exists($product, 'get_name')) { 
     // WooCommerce 3.x 
     $is_link = substr($name, 0, 3) === '<a '; 
     $name = $product->get_name(); 
     if ($is_link) { 
     $name = sprintf(
      '<a href="%s">%s</a>', 
      esc_url($product->get_permalink($cart_item)), 
      $name 
     ); 
     } 
    } 
    return $name; 
    }, 
    50, 3 
); 
+0

JAKE! Vous avez réussi. Oh mon dieu, je ne peux même pas vous dire à quel point j'apprécie votre aide. Ce code a complètement résolu mon problème (très stressé). J'utilise en effet un plugin, et je vais contacter l'auteur pour transmettre cette info sur la comparabilité avec WooCommerce 3.x. Je ne peux vraiment pas vous remercier assez! Aimez-vous les boutons de pinback? J'aimerais vous envoyer un colis de remerciement. Je suis nouveau à Stack, mais si vous pouvez me DM, je vais totalement vous brancher! – user8507215

+0

J'ai utilisé le même code lorsqu'un thème tiers a personnalisé le modèle de chariot mais n'a pas été mis à jour. Heureux que cela a aussi marché dans votre cas. Vous devez marquer la réponse comme la «réponse acceptée» si elle répond à votre question; vous pouvez l'emporter si vous le souhaitez ... – Jake

+0

Fait et fait! Merci encore, Jake. Vous êtes un assistant WooCommerce! :) – user8507215