J'ai cette fonctionnalité pour ajouter des champs méta personnalisés aux détails du produit dans tous les e-mails WooCommerce. Mais je n'en ai besoin qu'après le paiement de la commande (cela peut aussi être simplement un e-mail « complété »).
add_action( 'woocommerce_order_item_meta_start', 'email_confirmation_display_order_items', 10, 3 ); function email_confirmation_display_order_items( $item_id, $item, $order ) { // On email notifications for line items if ( ! is_wc_endpoint_url() && $item->is_type('line_item') ) { $ot_address = get_post_meta( $item->get_product_id(), 'ot_address', true ); if ( ! empty($ot_address) ) { printf( '<div>' . __("Terms: %s", "woocommerce") . '</div>', $ot_address ); } } }
J'aimerais pouvoir l'imbriquer à l'intérieur if ( $email->id == 'customer_completed_order' ) {}
pour que le code final ressemble à ceci :
add_action( 'woocommerce_order_item_meta_start', 'email_confirmation_display_order_items', 10, 3 ); function email_confirmation_display_order_items( $item_id, $item, $order ) { if ( $email->id == 'customer_completed_order' ) { // On email notifications for line items if ( ! is_wc_endpoint_url() && $item->is_type('line_item') ) { $ot_address = get_post_meta( $item->get_product_id(), 'ot_address', true ); if ( ! empty($ot_address) ) { printf( '<div>' . __("Terms: %s", "woocommerce") . '</div>', $ot_address ); } } } }
Mais après l'avoir changé, il a cessé de fonctionner. Aucune suggestion?
Comme vous pouvez le voir dans le code try,
$email
不是woocommerce_order_item_meta_start
fait partie du hook. Ainsi, pour cibler certaines notifications par e-mail WooCommerce, vous avez besoin d'une solution de contournement.Étape 1) Créez et ajoutez une variable globale via un autre hook qui ne fonctionne que pour les notifications par e-mail WooCommerce.
Étape 2) Dans le hook
woocommerce_order_item_meta_start
, utilisez une variable globale afin que nous puissions cibler certaines notifications par e-mail WooCommerce