Как добавить поле имени пользователя в WooCommerce

Вопрос или проблема

Я не знаю, как добавить поле для имени пользователя на страницу регистрации. Также нет настроек для этого. Раньше была настройка для добавления поля имени пользователя, но сейчас её нет. Как я могу добавить поле имени пользователя в регистрацию WooCommerce? Я уже пробовал код, но он не работает. Я пытался добавить код следующим образом:

add_action( ‘woocommerce_register_form_start’, ‘custom_woocommerce_register_username’ );
function custom_woocommerce_register_username() {
?>

*
” />

<?php
}
// Обеспечение обязательности поля имени пользователя
add_filter( ‘woocommerce_registration_errors’, ‘custom_woocommerce_registration_errors_username’, 10, 3 );
function custom_woocommerce_registration_errors_username( $errors, $username, $email ) {
if ( isset( $_POST[‘username’] ) && empty( $_POST[‘username’] ) ) {
$errors->add( ‘username_error’, __( ‘Имя пользователя обязательно!’, ‘woocommerce’ ) );
}
return $errors;
}

// Сохранение имени пользователя при регистрации
add_action( ‘woocommerce_created_customer’, ‘custom_save_registration_fields_username’ );
function custom_save_registration_fields_username( $customer_id ) {
if ( isset( $_POST[‘username’] ) ) {
wp_update_user( array( ‘ID’ => $customer_id, ‘user_login’ => sanitize_text_field( $_POST[‘username’] ) ) );
}
}

Ответ или решение

Чтобы добавить поле имени пользователя на страницу регистрации в WooCommerce, вы можете использовать следующий код. Убедитесь, что вы добавляете код в файл functions.php вашей темы или в специальный плагин (рекомендуется использовать плагин для сохранения изменений, чтобы избежать их потери при обновлении темы).

Шаг 1: Добавьте поле имени пользователя на форму регистрации

add_action( 'woocommerce_register_form_start', 'custom_woocommerce_register_username' );
function custom_woocommerce_register_username() {
    ?>
    <p class="form-row form-row-wide">
        <label for="reg_username"><?php _e( 'Username', 'woocommerce' ); ?> <span class="required">*</span></label>
        <input type="text" class="input-text" name="username" id="reg_username" value="<?php if ( ! empty( $_POST['username'] ) ) echo esc_attr( wp_unslash( $_POST['username'] ) ); ?>" />
    </p>
    <?php
}

Шаг 2: Валидация имени пользователя

Добавьте следующий код, чтобы сделать поле имени пользователя обязательным:

add_filter( 'woocommerce_registration_errors', 'custom_woocommerce_registration_errors_username', 10, 3 );
function custom_woocommerce_registration_errors_username( $errors, $username, $email ) {
    if ( isset( $_POST['username'] ) && empty( $_POST['username'] ) ) {
        $errors->add( 'username_error', __( 'Username is required!', 'woocommerce' ) );
    }
    return $errors;
}

Шаг 3: Сохранение имени пользователя при регистрации

Используйте следующий код для сохранения имени пользователя в базе данных:

add_action( 'woocommerce_created_customer', 'custom_save_registration_fields_username' );
function custom_save_registration_fields_username( $customer_id ) {
    if ( isset( $_POST['username'] ) ) {
        wp_update_user( array( 'ID' => $customer_id, 'user_login' => sanitize_text_field( $_POST['username'] ) ) );
    }
}

Полный код

Объедините все компоненты вместе, чтобы они работали в одном месте:

add_action( 'woocommerce_register_form_start', 'custom_woocommerce_register_username' );
function custom_woocommerce_register_username() {
    ?>
    <p class="form-row form-row-wide">
        <label for="reg_username"><?php _e( 'Username', 'woocommerce' ); ?> <span class="required">*</span></label>
        <input type="text" class="input-text" name="username" id="reg_username" value="<?php if ( ! empty( $_POST['username'] ) ) echo esc_attr( wp_unslash( $_POST['username'] ) ); ?>" />
    </p>
    <?php
}

add_filter( 'woocommerce_registration_errors', 'custom_woocommerce_registration_errors_username', 10, 3 );
function custom_woocommerce_registration_errors_username( $errors, $username, $email ) {
    if ( isset( $_POST['username'] ) && empty( $_POST['username'] ) ) {
        $errors->add( 'username_error', __( 'Username is required!', 'woocommerce' ) );
    }
    return $errors;
}

add_action( 'woocommerce_created_customer', 'custom_save_registration_fields_username' );
function custom_save_registration_fields_username( $customer_id ) {
    if ( isset( $_POST['username'] ) ) {
        wp_update_user( array( 'ID' => $customer_id, 'user_login' => sanitize_text_field( $_POST['username'] ) ) );
    }
}

Дополнительные рекомендации

  1. Резервное копирование: Перед внесением изменений в файл functions.php, создайте резервную копию, чтобы избежать возможных проблем.
  2. Использование плагинов: Рассмотрите возможность использования плагинов, которые позволяют настраивать форму регистрации WooCommerce, такие как "WooCommerce Registration Form" или "User Registration".
  3. Тестирование: После добавления кода тестируйте регистрацию, чтобы убедиться, что всё работает правильно и нет ошибок.

Следуя этим шагам, вы сможете добавить поле имени пользователя на страницу регистрации WooCommerce, а также корректно обработать валидацию и сохранение данных.

Оцените материал
Добавить комментарий

Капча загружается...