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

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

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

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

Есть идеи?

Благодарю.

2

Решение

(добавлена ​​совместимость с версиями 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

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]