Отключить поле email в деталях учетной записи WooCommerce

31 мар. 2017 г., 08:13:01
Просмотры: 15.1K
Голосов: 2

Есть ли возможность отключить поле email в деталях учетной записи клиента WooCommerce? Или доступен ли какой-то хук или действие для этого? Я использую готовую тему и не сильно разбираюсь в PHP. Пробовал плагин "Prevent Email Change" от Happy Plugins, но он не сработал.

Буду очень признателен за любую помощь в этом вопросе.

Спасибо,

0
Все ответы на вопрос 3
4

Вы можете сделать это, добавив следующий код в файл functions.php:

function custom_override_checkout_fields( $fields ) {
    unset($fields['billing']['billing_email']);    
    return $fields;
}
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields', 1000, 1 );

Но это неправильный подход, так как WooCommerce использует email для уведомления пользователя о статусе заказа.

31 мар. 2017 г. 21:19:56
Комментарии

Привет, спасибо за это. Да, я это знал. Но я хотел, чтобы они могли зарегистрировать свой email при оформлении заказа, а затем, после полного создания аккаунта, они больше не смогут изменять свой email на странице "Детали аккаунта". Это возможно?

Bry Ledesma Bry Ledesma
3 апр. 2017 г. 03:05:21

WordPress не имеет фильтра или хука для предотвращения изменения email. Happy Plugin просто отключает поле email на странице администрирования, поэтому он не может предотвратить действия на странице "Детали аккаунта" в WooCommerce. Но в чем причина запрета? Пользователи идентифицируются по id.

KAGG Design KAGG Design
3 апр. 2017 г. 03:46:25

У меня есть веская причина для этого. Я создаю сайт для электронного обучения с ограниченным доступом. Только пользователи из белого списка доменов могут присоединиться. Валидация email происходит при регистрации, но пользователи все еще могут изменить email через эту страницу, чего быть не должно.

pmdci pmdci
18 авг. 2017 г. 20:43:20

это только удаляет поле из отображения, но не отключает его.

Debbie Kurth Debbie Kurth
12 апр. 2022 г. 23:46:13
0

Вот что я использую. Я также устранял проблему с неправильными email на зарегистрированных аккаунтах. Поэтому я просто отключил поле и установил 'required' => false, если пользователь вошел в систему.

if ( is_user_logged_in() ) {
    $fields['billing']['billing_email'] = [
        'label' => 'E-Mail адрес',
        'required'  => false,
        'custom_attributes' => [
            'disabled' => 'disabled',
        ]
    ];
} else {
    $fields['billing']['billing_email'] = [
        'label' => 'E-Mail адрес',
        'required'  => true,

    ];
}

Надеюсь, это кому-то поможет!

7 апр. 2020 г. 10:36:59
2

Я нашел в этом файле: wp-content\plugins\woocommerce\includes\class-wc-countries.php:

public function get_address_fields( $country = '', $type = 'billing_' )

Установите required в false, и email станет необязательным.

13 июл. 2020 г. 05:10:24
Комментарии

Привет, Мануэль, добро пожаловать на wordpress.stackexchange. Хотя технически твой ответ верен, я вынужден поставить ему минус, потому что редактировать плагин таким образом не рекомендуется. Что произойдет, если плагин обновится и правки удалятся? Лучше использовать хук или фильтр для достижения цели автора вопроса. Спасибо, что присоединился, надеюсь, это первый из многих полезных ответов, которые ты предоставишь :)

admcfajn admcfajn
13 июл. 2020 г. 07:07:33

Я поставил плюс, потому что это креативный способ решения проблемы. Не обязательно правильный, но ты его нашел, и для некоторых это может быть единственным решением. Несправедливо и неправильно обесценивать такое решение, ведь можно было использовать дочернюю тему или любые другие методы переопределения, защищенные от обновлений плагина. Лучший способ — изменить поле [required] на 0, используя add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' ); значения: [billing_email] => Array ( [label] => Email address [required] => 1

Debbie Kurth Debbie Kurth
12 апр. 2022 г. 23:50:01