Maison > Questions et réponses > le corps du texte
L'action "woocommerce_email_customer_details" contient les données d'adresse de facturation et d'adresse de livraison. Tout ce dont j'ai besoin, c'est de l'adresse de livraison.
Comment puis-je atteindre cet objectif ? Vous trouverez ci-dessous mon modèle d'e-mail en texte brut "Nouvelle commande" actuel (admin-new-order.php)
/*Admin new order email (plain text)*/ defined( 'ABSPATH' ) || exit; do_action( 'woocommerce_email_customer_details', $order, $sent_to_admin, $plain_text, $email ); do_action( 'woocommerce_email_order_details', $order, $sent_to_admin, $plain_text, $email ); if ( $additional_content ) { echo esc_html( wp_strip_all_tags( wptexturize( $additional_content ) ) ); }
P粉8068340592023-12-30 10:19:53
Si vous utilisez ce code, les informations de facturation et d'expédition seront supprimées des notifications par e-mail requises. En effet, cela garantit que les fichiers modèles pertinents ne sont pas chargés :
function action_woocommerce_email_customer_details( $order, $sent_to_admin, $plain_text, $email ) { $mailer = WC()->mailer(); remove_action( 'woocommerce_email_customer_details', array( $mailer, 'email_addresses' ), 20 ); } add_action( 'woocommerce_email_customer_details', 'action_woocommerce_email_customer_details', 5, 4 );
Cependant, puisque vous souhaitez uniquement masquer/ne pas afficher partiellement la sortie du fichier modèle concerné (/emails/email-addresses.php), une approche différente sera nécessaire 强>.
Cela peut être fait en adaptant le fichier modèle /emails/email-addresses.php à vos besoins. Ce modèle peut être remplacé en le copiant yourtheme/woocommerce/emails/email-addresses.php
Remarque : Puisque vous souhaitez appliquer cela uniquement à des notifications par e-mail spécifiques, vous devez utiliser $email->id
. Étant donné que cela n'est pas transmis par défaut au fichier modèle concerné, une solution de contournement est requise.
Ceci est décrit dans Comment transmettre "$email" au fichier de modèle d'e-mail WooCommerce code de réponse s'il n'est pas disponible par défaut.
Alors pour répondre à votre question :
Étape 1)Ajoutez dans le fichier functions.php
du thème enfant actif (ou thème actif)// Header - set global variable function action_woocommerce_email_header( $email_heading, $email ) { $GLOBALS['email_id'] = $email->id; } add_action( 'woocommerce_email_header', 'action_woocommerce_email_header', 10, 2 );
Étape 2) Dans le fichier modèle /emails/email-addresses.php, @version 5.6.0
Remplacer les lignes 18 à 20
if ( ! defined( 'ABSPATH' ) ) { exit; }
et
if ( ! defined( 'ABSPATH' ) ) { exit; } // Getting the email ID global variable $ref_name_globals_var = isset( $GLOBALS ) ? $GLOBALS : ''; $email_id = isset( $ref_name_globals_var['email_id'] ) ? $ref_name_globals_var['email_id'] : '';
et
Remplacer les lignes 28 à 40
get_billing_phone() ) : ?>
get_billing_phone() ); ?> get_billing_email() ) : ?>
get_billing_email() ); ?>
et
get_billing_phone() ) : ?>
get_billing_phone() ); ?> get_billing_email() ) : ?>
get_billing_email() ); ?>
Étape 1)Ajoutez dans le fichier functions.php
du thème enfant actif (ou thème actif)function action_woocommerce_email_order_details( $order, $sent_to_admin, $plain_text, $email ) { // Plain text is TRUE and target specific email notification if ( $plain_text && $email->id == 'new_order' ) { $GLOBALS['email_id'] = $email->id; } } add_action( 'woocommerce_email_order_details', 'action_woocommerce_email_order_details', 1, 4 );
Étape 2) Dans le fichier modèle /emails/plain/email-addresses.php, @version 5.6.0
Remplacer les lignes 20 à 29
echo "\n" . esc_html( wc_strtoupper( esc_html__( 'Billing address', 'woocommerce' ) ) ) . "\n\n"; echo preg_replace( '#
#i', "\n", $order->get_formatted_billing_address() ) . "\n"; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped if ( $order->get_billing_phone() ) { echo $order->get_billing_phone() . "\n"; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } if ( $order->get_billing_email() ) { echo $order->get_billing_email() . "\n"; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped }
et
// Getting the email ID global variable $ref_name_globals_var = isset( $GLOBALS ) ? $GLOBALS : ''; $email_id = isset( $ref_name_globals_var['email_id'] ) ? $ref_name_globals_var['email_id'] : ''; // Targeting NOT a specific email. Multiple statuses can be added, separated by a comma if ( ! in_array( $email_id, array( 'new_order' ) ) ) { echo "\n" . esc_html( wc_strtoupper( esc_html__( 'Billing address', 'woocommerce' ) ) ) . "\n\n"; echo preg_replace( '#
#i', "\n", $order->get_formatted_billing_address() ) . "\n"; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped if ( $order->get_billing_phone() ) { echo $order->get_billing_phone() . "\n"; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } if ( $order->get_billing_email() ) { echo $order->get_billing_email() . "\n"; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } }