web-dev-qa-db-fra.com

wp_create_user hook

J'utilise UserUltra Pro plugin et je dois créer un type de message personnalisé après l'enregistrement de l'utilisateur sur le site. UserUltra plugin utilise wp_create_user() qui, je le sais, est un wrapper pour wp_insert_user(). De plus, je sais que 'user_register' est le hook appelé après wp_insert_user().

À côté de cela, je ne peux pas créer de nouveau type de publication personnalisé, car il semble que user_register hook n'est pas appelé. Est-ce possible? Comment puis-je le gérer?

2
frabiacca

Il y a en fait deux actions } _: une lorsque le profil est mis à jour et un lorsque l'utilisateur est enregistré .

# Fires immediately after an existing user is updated.
do_action( 'profile_update', $user_id, $old_user_data );

# Fires immediately after a new user is registered.
do_action( 'user_register', $user_id );

Donc, tant que le nom d'utilisateur n'est pas vide et que le nom d'utilisateur n'existe pas, il devrait continuer. Jetez un coup d'œil aux clauses de retour:

if ( empty( $user_login ) ) {
    return new WP_Error('empty_user_login', __('Cannot create a user with an empty login name.') );
}

if ( ! $update && username_exists( $user_login ) ) {
    return new WP_Error( 'existing_user_login', __( 'Sorry, that username already exists!' ) );
}

Cela signifie que si vous ne récupérez pas d'objet WP_Error, il devrait s'exécuter. Vous pouvez essayer les nombreux filtres de la fonction principale pour limiter les problèmes si votre hook ne s’exécute pas. Celui qui exécute before renvoie l'erreur, est le suivant:

apply_filters( 'pre_user_login', $sanitized_user_login );

Si celui-ci fonctionne, alors le plugin ne vérifie tout simplement pas is_wp_error() et ignore l'appel d'insertion qui a échoué.

<?php /** Plugin Name: Test if wp_insert_user() filters work */
add_filter( 'pre_user_login', function( $user )
{
    var_dump( current_filter()." works fine" );
    return $user;
} );
2
kaiser