根据 Woocommerce 中的用户数据自动更新订单账单的名字和姓氏

Keep order billing first and last names auto updated from user data in Woocommerce

因此,我有一个脚本使用 WC API 在另一个应用程序中获取 billing_last_name。我最近添加了一个插件,允许用户通过社交网络连接到该网站。这会自动使用来自社交网络的名字/姓氏创建一个帐户。

下订单时,我希望隐藏 billing_first_name 和 billing_last_name 字段,但同时在 first_name 和 [=19= 的订单后自动完成] 之前创建的帐户(下订单的用户)。 我尝试了以下代码,但在整个站点上出现 500 错误:

add_action('woocommerce_checkout_order_processed', 'custom_process_order1', 10, 1);
function custom_process_order1($order_id) {
    $current_user = wp_get_current_user();
    $current_user_id = get_current_user_id();

    update_user_meta($current_user->billing_first_name$current_user_id, "first_name");
    update_user_meta($current_user->billing_last_name, $current_user_id, "last_name");
}

您的代码有误有误。请尝试以下操作:

add_action( 'woocommerce_checkout_create_order', 'update_order_first_and_last_names', 30, 2 );
function update_order_first_and_last_names( $order, $posted_data ) {
    $user_id = $order->get_customer_id(); // Get user ID

    if( empty($user_id) || $user_id == 0 )
        return; // exit

    $first_name = $order->get_billing_first_name(); // Get first name (checking)

    if( empty($first_name) ){
        $first_name = get_user_meta( $user_id, 'billing_first_name', true );
        if( empty($first_name) )
            $first_name = get_user_meta( $user_id, 'first_name', true );

        $order->set_billing_first_name($first_name); // Save first name
    }

    $last_name  = $order->get_billing_last_name(); // Get last name (checking)

    if( empty($last_name) ){
        $last_name = get_user_meta( $user_id, 'billing_last_name', true );
        if( empty($last_name) )
            $last_name = get_user_meta( $user_id, 'last_name', true );

        $order->set_billing_last_name($last_name); // Save last name
    }
}

代码进入您的活动子主题(或活动主题)的 function.php 文件。应该可以。