Intereting Posts
Пользовательская страница «Забыть пароль» Сложный запрос и размещение страниц Успешная функция AJAX с использованием JS substr () не работает в WP 4.1 vs 4.0 Как добавить поиск в меню? Использование темы внутри каталога плагина Невозможно использовать теги Tag Post Type Вставьте заголовок интервала внутри заголовка виджета, чтобы дать другой цвет второму слову Как решить 500 ошибок на панели управления WordPress Admin из-за тайм-аута на getdirsize Ограничить роли, отображаемые в users.php, в зависимости от пользовательской роли Списки сообщений CPT, которые соответствуют названию страницы Рекомендации по обеспечению установки Buddypress? Где удалить <link> из фида комментариев? Нужна консультация о том, как добавлять ссылки на страницу профиля пользователя? Запретить WordPress устанавливать плагины и темы через Admin Проблема добавления нового сайта в многопроцессорный

Как отличить пользовательскую регистрацию пользователя hook_update, пользовательский пароль для сброса пароля или профиль пользователя?

Крюк

profile_update 

увольняется, если пользователь обновляет свой профиль, то есть также когда он сбрасывает первый пароль после регистрации и регистрации.

Как я могу различать три случая?

РЕДАКТИРОВАТЬ: Есть, по крайней мере, 3 случая, чтобы отличить, в котором называется этот крючок.

  1. первый шаг регистрации пользователя
    • Пользователь заполняет электронную почту и имя пользователя и сохраняет (здесь вызывается профиль_update), на котором представлен запрос на проверку электронной почты для процесса проверки
  2. пароль пользователя после регистрации
    • Пользователь проверяет почту, выполняет предложенный URL-адрес, сбрасывает пароль и сохраняет (здесь вызывается профиль_update)
  3. пользователь обновляет свой профиль
    • Пользователь регистрируется и обновляет некоторые данные в своем профиле и сохраняет (здесь вызывается профиль_update)

Я думаю, что можно отличить случай 3, проверяя, кто-то, кто его в настоящее время вошел в систему

 is_user_logged_in() 

Тем не менее проблема состоит в том, чтобы отличить случай 2 от 1. Как указывает s_ha_dum, есть возможность проверить user_activation_key. Если ключ создается не в момент времени 1, а в момент времени 2, то 3 случая различимы. (Даже если я лично считаю, что крючок покрывает слишком много случаев и не должен).

Solutions Collecting From Web of "Как отличить пользовательскую регистрацию пользователя hook_update, пользовательский пароль для сброса пароля или профиль пользователя?"

Технически вы не можете. Этот фильтр не передает никаких данных, которые специально позволят вам различать эти два случая.

 2086 /** 2087 * Fires immediately after an existing user is updated. 2088 * 2089 * @since 2.0.0 2090 * 2091 * @param int $user_id User ID. 2092 * @param object $old_user_data Object containing user's data prior to update. 2093 */ 2094 do_action( 'profile_update', $user_id, $old_user_data ); 

Вы заметили, что фильтр проходит через $old_user_data поэтому вы можете проверить user_activation_key в таблице *_users . Тем не менее, я думаю, что это поле заполняется, когда пользователь сбрасывает пароль, а не только при создании учетной записи.

Чтобы быть абсолютно уверенным, вам, вероятно, нужно будет установить значение метаданных пользователя при первом входе в систему, а затем проверить, что для последующих логинов.

Для того, чтобы различать случаи 1 и 3, я фактически использовал:

 add_action( 'profile_update', 'when_profile_update', 10, 2 ); function when_profile_update( $user_id, $old_user_data ) { if (is_user_logged_in()) { // Updating profile info when logged in }else{ if (empty($old_user_data->user_activation_key)) { // Registering } } } 

В настоящее время на моем сайте profile_update не запускается сброс пароля, поэтому случай 2 не выполняется.