Nous proposons un certain nombre de produits définis comme des « kits ». Ce sont des listes de produits composées d'autres produits. Les données définissant la suite sont stockées dans le tableau de métadonnées. J'ai créé un hook pour afficher les métadonnées dans la page produit et le panier. Je dois faire quelque chose de similaire dans « E-mail de commande terminée » et « Page de commande administrative », mais je ne sais pas comment le faire. Voici le hook que j'ai créé :
add_filter( 'bis_show_kit_meta', 'bis_show_kit_meta_contents', 10, 3 ); fonction bis_show_kit_meta_contents($productID) { global $ wpdb ; $postMeta = get_post_meta($productID,'',true); if ((isset($postMeta['bis_kit_id'])) et ($postMeta['bis_kit_id'][0] > 1)) { echo 'Ceci est un kit contenant les éléments suivants :
'; echo $postMeta['bis_kit_type'][0].'
'; foreach ($ postMeta comme $ kititem) { foreach ($kititem comme $value) { $nouvellevaleur = désérialiser($valeur); si ($nouvellevaleur) { $newvalue2 = désérialiser($newvalue); if($newvalue2['type']=="kititem"){ echo '
' .$nouvellevaleur2['quantité']. ' -> ' $nouvellevaleur2['nom']. } } } } } } La fonction actuelle est déjà connectée au modèle correspondant dans mon thème enfant. Je ne sais pas comment appliquer une fonction similaire au fichier customer-completed-email.php
, ni où dois-je l'accrocher dans la page de commande de modification de l'administrateur. J'ai trouvé du code dans un autre article qui ressemble à ce que je dois faire, mais je n'arrive pas à déterminer dans quel fichier se trouvent les modifications apportées à l'ordre d'administration. Le code que j'ai trouvé est : add_action('woocommerce_before_order_itemmeta','woocommerce_before_order_itemmeta',10,3); fonction woocommerce_before_order_itemmeta($item_id, $item, $product){ ... } Tout avis serait grandement apprécié
WooCommerce dispose déjà de nombreux hooks que vous pouvez utiliser dans les modèles WooCommerce au lieu d'ajouter les vôtres...
Une bonne règle de développement consiste à utiliser d’abord les hooks existants. S'il n'y a pas de hook pratique ou disponible, vous pouvez remplacer le modèle WooCommerce via un thème enfant. Pourquoi? Parce que les modèles sont parfois mis à jour et que vous devez ensuite mettre à jour le modèle modifié, contrairement aux hooks.
Pour la notification « Commande terminée par le client », utilisez un
woocommerce_order_item_meta_end
hameçon d'action comme celui-ci :Cela vous permettra d'afficher des métadonnées personnalisées uniquement dans la notification « Commande terminée par le client ».
Alternativement, vous pouvez remplacer le hook par un
woocommerce_order_item_meta_start
avec les mêmes arguments de variable de fonction.Placez le code dans le fichier function.php de votre thème enfant ou dans un plugin.