Отображение IP-адреса клиента в уведомлении по электронной почте о новом заказе

Когда будет создан новый заказ, woocommerce отправит электронное письмо администратору, и я хочу, чтобы он также отправлял IP-адрес клиента внутри электронного письма. Но я не могу заставить его работать, вот что я получил так далеко:

<?php echo get_post_meta( $order->id, '_customer_ip_address', true ); ?>

Этот код входит в mytheme/woocommerce/emails/admin-new-order.php

Есть идеи?

Благодарю.

1 ответ

Решение

(добавлена ​​совместимость для версий WooCommerce 3+)

Обновление 2: добавлено условие отображения IP-адреса только для администратора. Уведомление о новых заказах. Заменено неопределенным $email_id от $email->id;

Вы можете использовать любые связанные хуки для уведомлений по электронной почте, и вам не нужно переопределять шаблоны писем WooCommerce.

В приведенном ниже примере IP-адрес клиента будет отображаться непосредственно перед данными клиента, using woocommerce_email_customer_details крюк:

add_action('woocommerce_email_customer_details', 'send_customer_ip_adress', 10, 4);
function send_customer_ip_adress($order, $sent_to_admin, $plain_text, $email){

    // Just for admin new order notification
    if( 'new_order' == $email->id ){
        // WC3+ compatibility
        $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;

        echo '<br><p><strong>Customer IP address:</strong> '. get_post_meta( $order_id, '_customer_ip_address', true ).'</p>';
    }
} 

Этот код протестирован и является полностью функциональным.

Код помещается в файл function.php вашей активной дочерней темы (или темы). Или также в любом плагине php-файлов.

Вы также можете использовать вместо этого эти крючки:

woocommerce_email_order_details
woocommerce_email_before_order_table
woocommerce_email_after_order_table
woocommerce_email_order_meta

Другие вопросы по тегам