Intereting Posts
Запустить плагин снова после завершения ajax-вызова Динамические ссылки на изображения в зависимости от версии Expression / 'Single Post' Значение захвата excerpt_length ошибка в форме расширенного поиска для пользовательских типов сообщений в WordPress array_key_exists () ожидает, что параметр 2 будет массивом, указанная строка Как показывать страницы в меню без ссылки Один суб-сайт медленный, в то время как все остальные загружаются отлично, те же темы и плагины Почему мой вызов AJAX не работает? WP Cron «неполный», чтобы вставлять сообщения Фильтр инструментов загрузки WordPress 3.5+ Создание отдельных страниц для профилей авторов и списков сообщений автором Изображение миниатюр в соответствии с экраном Секция коротких профилей get_user_meta Создайте Wp_Query в файле save_post Удалить определенную страницу / сообщение из фида Темы для детей и обновление родительской темы

Функция переопределения email_exists

Я пытаюсь переопределить функцию email_exists, чтобы изменить способ ее работы. Он не указан как подключаемая функция, поэтому я не уверен, как это сделать.

Я бы хотел, чтобы следующее произошло

  • Кто-то пытается зарегистрироваться с существующим адресом электронной почты
  • WordPress обнаруживает, что это дубликат
  • WordPress автоматически присваивает ему случайный адрес электронной почты вместо

Можно ли что-то сделать с фильтрами?

UPDATE – — У меня теперь есть это в моем файле функций …

add_filter( 'pre_user_email', 'wpse163079_pre_user_email_example' ); function wpse163079_pre_user_email_example( $user_email ) { if ( email_exists( $user_email ) ) { $user_email = 'randomemail3452345@example.com'; return $user_email; } else { return $user_email; } } 

Но это не работает, оно все равно дает мне сообщение, что «учетная запись уже зарегистрирована с вашим адресом электронной почты. Пожалуйста, войдите'

Примечание . Причина, по которой это не работает для OP, – это использование woocommerce, иначе, поэтому в отношении основных функций WordPress это должно работать, как описано.


Обновить:

Я предположил, что это касается электронных писем при регистрации. Хорошо, что вы указали свои потребности. Попытка WordPress – выполняется несколько проверок – для добавления нового пользователя с помощью wp_insert_user – source: user.php . Там у вас есть фильтр pre_user_email , который вы можете использовать для своей цели.

Примерное использование будет выглядеть так:

 add_filter( 'pre_user_email', 'wpse163079_pre_user_email_example' ); function wpse163079_pre_user_email_example( $user_email ) { if ( email_exists( $user_email ) ) { // code that generates the random email address // do not forget to check if the random one does exist // assign random address as new $user_email then return $user_email; } else { return $user_email; } } 


Вы не можете переопределить email_exists() как это не функция подключаемого email_exists() . Но посмотрите на источник: user.php показывает:

 function email_exists( $email ) { if ( $user = get_user_by('email', $email) ) return $user->ID; return false; } 

Поэтому email_exists() использует get_user_by() – source: pluggable.php -, который, с другой стороны, является подключаемой функцией, так что вы можете переопределить. Как вы видите, get_user_by() выглядит так:

 function get_user_by( $field, $value ) { $userdata = WP_User::get_data_by( $field, $value ); if ( !$userdata ) return false; $user = new WP_User; $user->init( $userdata ); return $user; } 

Таким образом, никакой крючок – действие или фильтр – вы не можете использовать. Но это показывает, что в основном это оболочка для функциональности класса WP_User – source: capabilities.php . Посмотрев метод get_data_by() класса WP_User вы увидите, что доступ к нему недоступен.

Вы не писали, что вы пытаетесь сделать. Может быть, вы можете достичь того, чего хотите, просто переопределив get_user_by() . Другая возможность может заключаться в дополнительном extend класса WP_User . Я действительно не могу сказать гораздо больше с данной информацией, но это должно быть хорошей отправной точкой для вас.