Хук wp_create_user

16 сент. 2014 г., 14:10:28
Просмотры: 21.2K
Голосов: 2

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

Несмотря на это, я не могу создать новый пользовательский тип записи, потому что похоже, что хук user_register не вызывается. Это возможно? Как я могу это исправить?

1
Комментарии

что ты пытаешься сделать?

Tomás Cot Tomás Cot
16 сент. 2014 г. 14:56:54
Все ответы на вопрос 1
0

Фактически существует два действия: одно при обновлении профиля и одно при регистрации пользователя.

# Срабатывает сразу после обновления существующего пользователя.
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;
} );
16 сент. 2014 г. 14:52:33