Хук wp_create_user
Я использую плагин UserUltra Pro и мне нужно создать пользовательский тип записи после регистрации пользователя на сайте. Плагин UserUltra использует wp_create_user()
, который, как я знаю, является оболочкой для wp_insert_user()
. Кроме того, я знаю, что хук 'user_register' вызывается после wp_insert_user()
.
Несмотря на это, я не могу создать новый пользовательский тип записи, потому что похоже, что хук user_register
не вызывается. Это возможно? Как я могу это исправить?

Фактически существует два действия: одно при обновлении профиля и одно при регистрации пользователя.
# Срабатывает сразу после обновления существующего пользователя.
do_action( 'profile_update', $user_id, $old_user_data );
# Срабатывает сразу после регистрации нового пользователя.
do_action( 'user_register', $user_id );
Таким образом, пока логин пользователя не пуст и имя пользователя не существует, процесс должен продолжаться. Взгляните на условия возврата:
if ( empty( $user_login ) ) {
return new WP_Error('empty_user_login', __('Нельзя создать пользователя с пустым логином.') );
}
if ( ! $update && username_exists( $user_login ) ) {
return new WP_Error( 'existing_user_login', __( 'Извините, такое имя пользователя уже существует!' ) );
}
Это означает, что если вы не получаете объект WP_Error
, функция должна выполняться. Вы можете попробовать использовать многочисленные фильтры внутри основной функции, чтобы выяснить, где происходит сбой, если ваш хук не срабатывает. Фильтр, который выполняется перед возвратом ошибки, следующий:
apply_filters( 'pre_user_login', $sanitized_user_login );
Если он работает, значит плагин просто не проверяет is_wp_error()
и игнорирует неудачный вызов вставки.
<?php /** Plugin Name: Проверка работы фильтров wp_insert_user() */
add_filter( 'pre_user_login', function( $user )
{
var_dump( current_filter()." работает нормально" );
return $user;
} );
