Сохраняйте автоматическое обновление имени и фамилии заказа по данным пользователя в Woocommerce - PullRequest
0 голосов
/ 24 сентября 2018

Итак, у меня есть скрипт, который использует WC API для получения billing_last_name в другом приложении.Недавно я добавил плагин, который позволяет пользователю подключаться к сайту через социальные сети.Это создает учетную запись автоматически с именем / фамилией из социальной сети.

При размещении заказа я хочу, чтобы поля billing_first_name и billing_last_name были скрыты, но в то же время автоматически заполнялись после заказа из имен first_name и last_name созданного ранее аккаунта (пользователя, разместившего заказ).Я попробовал следующий код, но я получаю ошибку 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");
}

1 Ответ

0 голосов
/ 24 сентября 2018

Ваш код содержит ошибки и ошибки.Вместо этого попробуйте следующее:

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 вашей активной дочерней темы (или активной темы).Это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...