Можно ли добавить настройку языка в профиль WooCommerce?
Ссылка скопирована
Нужно добавить выбор языка (только из установленных в ВП) в профиль WooCommerce.
Вот сюда
Буду благодарен за направление куда смотреть, какие хуки нужны и тд.
(но и от готового кода не откажусь, если у кого таковой окажется ;) )
Гуглёж не помог.
Дополнительно:
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
woocommerce
Как отображать при фильтрации товары со значением search параметра visibility: HUSKY — Products Filter for WooCommerce?
0 ответов
VPN
Почему подключение через VPN работает только на wi-fi, а через кабель нет, где ошибка?
0 ответов
Safari
Почему снова флагнули домен в safari?
0 ответов
Telegram
Как диагностировать ошибку с подключением к прокси в мобильном приложении Telegram?
0 ответов


Да, выбор языка можно добавить в профиль 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 вашего мультиязычного плагина.