在 WooCommerce 中显示来自客户订单的账单电子邮件 我的帐户 编辑地址

时间:2021-03-14 13:52:58

标签: php wordpress woocommerce metadata orders

我想在每个订单中显示客户的元“电子邮件”,但这会引发错误。

add_action( 'woocommerce_before_edit_account_address_form', 'save_billing_email_to_user', 12, 1 );
function save_billing_email_to_user( $user_id ) {
    $query = new WC_Order_Query( 
        array( 
            'customer_id' => $user_id 
        )
    );
    $orders = $query->get_orders();
    foreach($orders as $ro => $inn){
             echo $ro['email'];
    }
}

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

改用以下重新访问的代码来查询一个订单以获取账单电子邮件:

add_action( 'woocommerce_before_edit_account_address_form', 'save_billing_email_to_user', 12 );
function save_billing_email_to_user( $user_id ) {
    $orders = wc_get_orders(  array( 'customer_id' => $user_id , 'limit' => '1' ) );
    if ( ! empty( $orders ) ) {
        $order = reset( $orders );
        $order_id      = $order->get_id();
        $billing_email = $order->get_billing_email();
        echo $billing_email;
    }
}

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


或者您可以显示来自客户的每个订单的帐单电子邮件地址,例如:

add_action( 'woocommerce_before_edit_account_address_form', 'save_billing_email_to_user', 12 );
function save_billing_email_to_user( $user_id ) {
    $orders = wc_get_orders(  array( 'customer_id' => $user_id ) );
    foreach( $orders as $order ){
        $order_id = $order->get_id();
        echo $order->get_billing_email() . '<br>';
    }
}