2017-10-06 8 views
1

Dans WwooCommerce, j'essaie d'ajouter le navire à des informations d'adresse différentes dans mon email d'administration.Vérifiez si "Expédier à une adresse différente" a été cochée dans Woocommerce

Comment puis-je vérifier si la case à cocher à expédier à une adresse différente de la page de paiement est cochée?

J'ai essayé d'utiliser:

$ship_to_different_address = get_option('woocommerce_ship_to_destination') === 'shipping' ? 1 : 0; 

if($ship_to_different_address == 1): 
//the additional email text here 
endif; 

Mais cela ne semble pas fonctionner. Des idées?

Répondre

3

peut être la meilleure façon est d'imiter la comparaison de l'ordre de la facturation et les adresses de livraison. Dans la plupart des hooks de notification par e-mail, l'objet $order est inclus en tant que paramètre.

est un exemple ici avec cette fonction accroché dans crochet d'action woocommerce_email_order_details, qui affiche quelque chose de différent selon que:

add_action('woocommerce_email_order_details', 'custom_content_email_order_details', 10, 4); 
function custom_content_email_order_details($order, $sent_to_admin, $plain_text, $email){ 
    // Only for "New Order" and admin email notification 
    if ('new_order' != $email->id && ! $sent_to_admin) return; 

    // Displaying something related 
    if($order->get_billing_address_1() != $order->get_shipping_address_1()) { 
     echo '<p style="color:red;">Different billing and shipping addresses<p>'; 
    } else { 
     echo '<p style="color:green;">Same billing and shipping addresses<p>'; 
    } 
} 

Code va dans le fichier function.php de votre thème enfant actif (ou thème) ou aussi dans n'importe quel fichier plugin.

Ce code est testé dans WooCommerce 3.1+ et travaille

Vous pouvez également utiliser (avec des priorités différentes) l'un des crochets suivants dans ce code:
- woocommerce_email_before_order_table
- woocommerce_email_after_order_table
- woocommerce_email_order_meta
- woocommerce_email_customer_details

2

ahhh .. nous pouvons simplement vérifier si $_POST['ship_to_different_address'] est réglé ..