在新订单电子邮件通知中显示客户 IP 地址
Display the customer IP Address in new order email notification
创建新订单时,woocommerce 会向管理员发送一封电子邮件,我希望它也能在电子邮件中发送客户的 IP 地址。但我无法让它工作,这是我目前得到的:
<?php echo get_post_meta( $order->id, '_customer_ip_address', true ); ?>
此代码进入 mytheme/woocommerce/emails/admin-new-order.php
有什么想法吗?
谢谢。
(增加了对 WooCommerce 版本 3+ 的兼容性)
Update 2: Added a condition to display the address IP only for Admin New orders notification. Replaced undefined $email_id
by $email->id;
您可以为电子邮件通知使用任何相关的挂钩,而无需覆盖 WooCommerce 电子邮件模板。
在下面的示例中,客户IP地址将显示在客户详细信息之前,using woocommerce_email_customer_details
hook:
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 文件中。
You can use also instead these hooks:
woocommerce_email_order_details
woocommerce_email_before_order_table
woocommerce_email_after_order_table
woocommerce_email_order_meta
创建新订单时,woocommerce 会向管理员发送一封电子邮件,我希望它也能在电子邮件中发送客户的 IP 地址。但我无法让它工作,这是我目前得到的:
<?php echo get_post_meta( $order->id, '_customer_ip_address', true ); ?>
此代码进入 mytheme/woocommerce/emails/admin-new-order.php
有什么想法吗?
谢谢。
(增加了对 WooCommerce 版本 3+ 的兼容性)
Update 2: Added a condition to display the address IP only for Admin New orders notification. Replaced undefined
$email_id
by$email->id;
您可以为电子邮件通知使用任何相关的挂钩,而无需覆盖 WooCommerce 电子邮件模板。
在下面的示例中,客户IP地址将显示在客户详细信息之前,using woocommerce_email_customer_details
hook:
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 文件中。
You can use also instead these hooks:
woocommerce_email_order_details
woocommerce_email_before_order_table
woocommerce_email_after_order_table
woocommerce_email_order_meta