有没有办法确定在woocommerce电子邮件中显示的确切订单日期和时间?到目前为止,我使用它来获取订单日期:
<?php printf( '<time datetime="%s">%s</time>', $order->get_date_created()->format( 'c' ), wc_format_datetime( $order->get_date_created() ) ); ?>
我收到了正确的日期,但是下订单时没有时间戳。如何添加确切的时间戳?
这样的事情:
订单号XXXX(2018年2月25日美国东部时间晚上10点06分)
答案 0 :(得分:5)
下订单时有 4个不同日期的情况 (其中$order
是WC_order
对象的实例),具体取决于订单状态,使用的付款方式以及关于行为的Woocommerce:
$order->get_date_created()
$order->get_date_modified()
$order->get_date_paid()
$order->get_date_completed()
所有这4个订单的不同日期都是WC_DateTime
个对象(实例),您可以使用WC_DateTime
方法。
要获得正确的格式,请执行以下操作:
订单号XXXX(2018年2月25日美国东部时间晚上10:06)
......你将使用例如以下内容:
$date_modified = $order->get_date_modified();
echo sprintf( '<p>Order NO. %s (placed on <time>%s</time>)</p>',
$order->get_order_number( ),
$date_modified->date("F j, Y, g:i:s A T")
);
如果您想使用
get_date_paid()
或get_date_completed()
方法,则需要仔细检查,测试WC_DateTime
对象是否存在,然后再尝试显示它...
$date_paid = $order->get_date_paid();
if( ! empty( $date_paid) ){
echo sprintf( '<p>Order NO. %s (placed on <time>%s</time>)</p>',
$order->get_order_number( ),
$date_paid->date("F j, Y, g:i:s A T")
);
}
由于您未指定要为客户处理订单电子邮件通知显示的具体内容,我将为您提供一个可以使用的挂钩功能示例:
add_action( 'woocommerce_email_order_details', 'custom_processing_order_notification', 1, 4 );
function custom_processing_order_notification( $order, $sent_to_admin, $plain_text, $email ) {
// Only for processing email notifications to customer
if( ! 'customer_processing_order' == $email->id ) return;
$date_modified = $order->get_date_modified();
$date_paid = $order->get_date_paid();
$date = empty( $date_paid ) ? $date_modified : $date_paid;
echo sprintf( '<p>Order NO. %s (placed on <time>%s</time>)</p>',
$order->get_order_number( ),
$date->date("F j, Y, g:i:s A T")
);
}
代码放在活动子主题(或主题)的function.php文件中。
经过测试和工作。