Maison > Questions et réponses > le corps du texte
P粉7369355872023-08-16 10:40:06
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 :
// 将email_id设置为全局变量 add_action('woocommerce_email_before_order_table', 'set_email_id_as_a_global', 1, 4); function set_email_id_as_a_global($order, $sent_to_admin, $plain_text, $email = null ){ if ( $email ) { $GLOBALS['email_id_str'] = $email->id; } } // 在“客户完成订单”电子邮件通知中显示自定义订单项元数据 add_action( 'woocommerce_order_item_meta_end', 'custom_email_order_item_meta', 10, 2 ); function custom_email_order_item_meta( $item_id, $item ){ // 获取email ID全局变量 $refGlobalsVar = $GLOBALS; $email_id = isset($refGlobalsVar['email_id_str']) ? $refGlobalsVar['email_id_str'] : null; // 仅适用于“客户完成订单”电子邮件通知 if ( ! empty($email_id) && 'customer_completed_order' === $email_id ) { bis_show_kit_meta_contents( $item->get_product_id() ); } }
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.