Когда будет создан новый заказ, woocommerce отправит электронное письмо администратору, и я хочу, чтобы он также отправлял IP-адрес клиента внутри электронного письма. Но я не могу заставить его работать, вот что я получил так далеко:
<?php echo get_post_meta( $order->id, '_customer_ip_address', true ); ?>
Этот код входит в mytheme/woocommerce/emails/admin-new-order.php
Есть идеи?
Благодарю.
(добавлена совместимость с версиями 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
Других решений пока нет …