Exclure l'adresse de facturation des notifications par e-mail WooCommerce spécifiques, afficher uniquement l'adresse de livraison
P粉071626364
P粉071626364 2023-12-29 14:46:55
0
1
478

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粉071626364
P粉071626364

répondre à tous(1)
P粉806834059

Pour les e-mails HTML :

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() ); ?>


Pour les e-mails en texte brut :

É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 } }
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!