Можно ли добавить настройку языка в профиль WooCommerce?
Ссылка скопирована
Нужно добавить выбор языка (только из установленных в ВП) в профиль WooCommerce.
Вот сюда
Буду благодарен за направление куда смотреть, какие хуки нужны и тд.
(но и от готового кода не откажусь, если у кого таковой окажется ;) )
Гуглёж не помог.
Дополнительно:
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
linkedin
Из-за чего выкидывает из аккаунта LinkedIn?
1 ответ
code-review
Нужен ли код-ревью React/TypeScript проекта?
1 ответ
Telegram
Как добиться, чтобы Telegram прислал мне именно смс код, а не через звонок его диктовал?
1 ответ
Аккумуляторные батареи
Почему при зарядке автостарта слышен писк, где искать причину?
1 ответ


Да, выбор языка можно добавить в профиль WooCommerce в разделе Мой аккаунт → Детали аккаунта. Технически это обычное поле пользователя, которое сохраняется в user meta. Список языков зависит от мультиязычного плагина: WPML, Polylang, TranslatePress и т.д.
Для WooCommerce нужны два хука: один выводит поле, второй сохраняет его:
add_action( 'woocommerce_edit_account_form', 'site_account_language_field' ); add_action( 'woocommerce_save_account_details', 'site_save_account_language_field' ); function site_account_language_field() { $user_id = get_current_user_id(); $value = get_user_meta( $user_id, 'preferred_language', true ); $languages = [ 'ru' => 'Русский', 'en' => 'English', ]; ?> <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide"> <label for="preferred_language">Язык</label> <select name="preferred_language" id="preferred_language"> <?php foreach ( $languages as $code => $label ) : ?> <option value="<?php echo esc_attr( $code ); ?>" <?php selected( $value, $code ); ?>> <?php echo esc_html( $label ); ?> </option> <?php endforeach; ?> </select> </p> <?php } function site_save_account_language_field( $user_id ) { if ( isset( $_POST['preferred_language'] ) ) { update_user_meta( $user_id, 'preferred_language', sanitize_key( wp_unslash( $_POST['preferred_language'] ) ) ); } }
Если стоит Polylang, список языков можно получить динамически:
$languages = function_exists( 'pll_languages_list' ) ? pll_languages_list( [ 'fields' => [] ] ) : [];
Если стоит WPML, чаще используют фильтр
wpml_active_languages. Главное — не сохранять произвольную строку без проверки. Перед сохранением проверьте, что выбранный код действительно есть среди установленных языков.Важно: это поле само по себе не переключит язык интерфейса WooCommerce. Оно только сохраняет предпочтение пользователя. Чтобы реально использовать его, нужно при входе/переходе в аккаунт перенаправлять пользователя на нужную языковую версию или подставлять язык через API вашего мультиязычного плагина.