wordpress 在WooCommerce中发送电子邮件通知之前,使用哪个钩子来保存订单 meta数据

ykejflvf  于 2022-11-02  发布在  WordPress
关注(0)|答案(1)|浏览(139)

我正在寻找一个Woocommerce行动挂钩(或过滤器,我不确定),我可以在发送新订单电子邮件通知之前更新发货和账单地址。
现在,我正在使用woocommerce_before_thankyou更新订单 meta。
订单保存了我想保存的正确地址,但电子邮件没有显示正确的地址。
下面是示例代码,与我正在做的类似:

add_action( 'woocommerce_thankyou', 'checkout_save_user_meta');

function checkout_save_user_meta( $order_id ) {
    $order = wc_get_order( $order_id );
    $my_custom_address = 'My custom address';

    update_post_meta( $order_id, '_billing_address_1',  $my_custom_address );
    update_post_meta( $order_id, '_shipping_address_1',  $my_custom_address );
}

对于这种情况下使用哪种钩子有什么建议吗?

erhoui1w

erhoui1w1#

您可以使用woocommerce_checkout_create_orderwoocommerce_checkout_update_order_meta操作挂接。
因此,您将获得:

/**
 * Action hook to adjust order before save.
 *
 * @since 3.0.0
 */
function action_woocommerce_checkout_create_order( $order, $data ) {    
    // Some value
    $my_custom_address = 'My custom address';

    // Update meta data
    $order->update_meta_data( '_billing_address_1', $my_custom_address );
    $order->update_meta_data( '_shipping_address_1', $my_custom_address );
}
add_action( 'woocommerce_checkout_create_order', 'action_woocommerce_checkout_create_order', 10, 2 );

/**
 * Action hook fired after an order is created used to add custom meta to the order.
 *
 * @since 3.0.0
 */
function action_woocommerce_checkout_update_order_meta( $order_id, $data ) {    
    // Get an instance of the WC_Order object
    $order = wc_get_order( $order_id );

    // Is a WC_Order
    if ( is_a( $order, 'WC_Order' ) ) {     
        // Some value
        $my_custom_address = 'My custom address';

        // Update meta data
        $order->update_meta_data( '_billing_address_1', $my_custom_address );
        $order->update_meta_data( '_shipping_address_1', $my_custom_address );

        // Save
        $order->save();
    }
}   
add_action( 'woocommerce_checkout_update_order_meta', 'action_woocommerce_checkout_update_order_meta', 10, 2 );

相关问题