Hook wp_create_user
Estoy usando el plugin UserUltra Pro y necesito crear un custom post type después de que el usuario se registre en el sitio. El plugin UserUltra utiliza wp_create_user()
que sé que es un contenedor para wp_insert_user()
. Además, sé que 'user_register' es el hook que se ejecuta después de wp_insert_user()
.
A pesar de esto, no puedo crear un nuevo custom post type porque parece que el hook user_register
no se está ejecutando. ¿Es esto posible? ¿Cómo puedo gestionarlo?

En realidad hay dos acciones: una cuando se actualiza el perfil y otra cuando se registra el usuario.
# Se ejecuta inmediatamente después de actualizar un usuario existente.
do_action( 'profile_update', $user_id, $old_user_data );
# Se ejecuta inmediatamente después de registrar un nuevo usuario.
do_action( 'user_register', $user_id );
Entonces, siempre que el inicio de sesión del usuario no esté vacío y el nombre de usuario no exista, debería proceder. Observa las cláusulas de retorno:
if ( empty( $user_login ) ) {
return new WP_Error('empty_user_login', __('No se puede crear un usuario con un nombre de inicio de sesión vacío.') );
}
if ( ! $update && username_exists( $user_login ) ) {
return new WP_Error( 'existing_user_login', __( '¡Lo sentimos, ese nombre de usuario ya existe!' ) );
}
Eso significa que si no recibes un objeto WP_Error
de vuelta, debería ejecutarse. Puedes probar los numerosos filtros dentro de la función principal para reducir dónde falla si tu hook no se ejecuta. El que se ejecuta antes de que se devuelva el error es el siguiente:
apply_filters( 'pre_user_login', $sanitized_user_login );
Si este funciona, entonces el plugin simplemente no está verificando is_wp_error()
e ignorando la llamada de inserción fallida.
<?php /** Plugin Name: Probar si los filtros de wp_insert_user() funcionan */
add_filter( 'pre_user_login', function( $user )
{
var_dump( current_filter()." funciona correctamente" );
return $user;
} );
