在 Woocommerce 电子邮件标头模板中获取订单对象

问题描述 投票:0回答:1

我正在尝试在 WooCommerce 电子邮件标头中获取订单项目,以获取

emails/email-header.php
Woocommerce 模板文件

中的某些条件内容

我尝试过

print_r
$order
,但它是空的并且没有给出任何结果。

如有任何帮助,我们将不胜感激。

php templates woocommerce orders email-notifications
1个回答
15
投票

更新:

自 WooCommerce 3.7 起,现在包含

$email
变量并可通过全局访问,因此要获取可以使用的订单对象:

<?php
    global $email;
    
    $order = $email->object;
?>

获取

$order
对象的方法是将
$email
全局变量包含回模板中(应该如此,就像在相关的挂钩函数中一样):

add_action( 'woocommerce_email_header', 'email_header_before', 1, 2 );
function email_header_before( $email_heading, $email ){
    $GLOBALS['email'] = $email;
}

代码位于活动子主题(或活动主题)的 function.php 文件中。已测试并有效

一旦完成已保存,在您的模板emails/email-header.php中,您将在开头插入以下内容:

<?php
    // Call the global WC_Email object
    global $email; 

    // Get an instance of the WC_Order object
    $order = $email->object; 
?>

所以知道您可以在模板上的任何位置使用 WC_Order 对象

$order
,例如:

<?php echo __('City: ') . $order->get_billing_city(); // display the billing city ?>

或获取订单商品:

<?php
    // Loop through order items
    foreach ( $order->get_items() as $item_id => $item ){
        // get the product ID
        $product_id = $item->get_product_id();
        // get the product (an instance of the WC_Product object)
        $product = $item->get_product();
    } 
?>

已测试且有效

© www.soinside.com 2019 - 2024. All rights reserved.