【问题标题】:Add customer email in a text on WooCommerce Order received page在 WooCommerce 订单接收页面上的文本中添加客户电子邮件
【发布时间】:2019-08-03 11:12:39
【问题描述】:

在 WooCommerce 中,在我的感谢/订单已收到页面的顶部,我添加了一个自定义文本,其中包含以下代码:

add_action( 'woocommerce_thankyou', 'my_order_received_text', 1, 0);
function my_order_received_text(){

    echo '<div class="my_thankyou2"><p>' . __('Your download link was sent to: ') . '</p></div>' ;

}

如何将客户的电子邮件地址添加到自定义文本的末尾?

【问题讨论】:

    标签: php wordpress email woocommerce hook-woocommerce


    【解决方案1】:

    要获取客户帐单电子邮件,您可以使用其中一种:

    现在您可以在 2 个不同的位置设置文本:

    1) 在收到订单页面的顶部:

    add_filter( 'woocommerce_thankyou_order_received_text', 'my_order_received_text', 10, 2 );
    function my_order_received_text( $text, $order ){
        if( ! is_a($order, 'WC_Order') ) {
            return $text;
        }
        // Get Customer billing email
        $email = $order->get_billing_email();
    
        return $text . '<br>
        <div class="my_thankyou2"><p>' . __('Your download link was sent to: ') . $email . '</p></div>' ;
    }
    

    代码进入您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且可以工作。


    2) 在收到订单页面的底部:

    这样使用WC_Order方法get_billing_email()

    add_action( 'woocommerce_thankyou', 'my_order_received_text', 10, 1 );
    function my_order_received_text( $order_id ){
        if( ! $order_id ){
            return;
        }
        $order = wc_get_order( $order_id ); // Get an instance of the WC_Order Object
        $email = $order->get_billing_email(); // Get Customer billing email
    
        echo '<div class="my_thankyou2"><p>' . __('Your download link was sent to: ') . $email . '</p></div>' ;
    }
    

    代码进入您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且可以工作。


    或者,使用WordPress get_post_meta()函数,在函数中替换:

    $order = wc_get_order( $order_id ); // Get an instance of the WC_Order Object
    $email = $order->get_billing_email(); // Get Customer billing email
    

    通过以下行:

    $email = get_post_meta( $order_id, '_billing_email', true ); // Get Customer billing email
    

    【讨论】:

    • 非常感谢。由于您的 woocommerce 代码答案和解释,我学到了很多东西。谢谢!
    • for 1) 为什么行 if( !is_a($order, 'WC_Order' ) { return $text; .... 重要?“如果它不是一个命令而不是什么都不做”或什么是什么意思?
    • @mika2019 只是为了确保我们没有得到显示错误的 WC_Order 对象“null”。
    • for case 1) 哦,我收到 Parse 错误:语法错误,意外等... 对于以下行: if( ! is_a($order, 'WC_Order' ) {跨度>
    • @mika2019 对不起,我忘记了一个右圆括号……更新了……
    猜你喜欢
    • 2019-09-22
    • 1970-01-01
    • 2021-07-20
    • 2021-10-27
    • 2019-03-15
    • 2019-04-25
    • 1970-01-01
    • 2021-10-27
    • 2017-08-08
    相关资源
    最近更新 更多