Hookul wp_create_user
Folosesc pluginul UserUltra Pro și am nevoie să creez un tip de postare personalizată după ce utilizatorul se înregistrează pe site. Pluginul UserUltra folosește wp_create_user()
care știu că este un wrapper pentru wp_insert_user()
. Mai mult, știu că 'user_register' este hookul apelat după wp_insert_user()
.
Pe lângă asta, nu pot crea un nou tip de postare personalizată pentru că se pare că hookul user_register
nu este apelat. Este posibil acest lucru? Cum pot gestiona această situație?

Există de fapt două acțiuni: Una când profilul este actualizat și una când utilizatorul este înregistrat.
# Se declanșează imediat după actualizarea unui utilizator existent.
do_action( 'profile_update', $user_id, $old_user_data );
# Se declanșează imediat după înregistrarea unui nou utilizator.
do_action( 'user_register', $user_id );
Deci, atâta timp cât numele de utilizator nu este gol și nu există deja, ar trebui să continue. Uită-te la clauzele de returnare:
if ( empty( $user_login ) ) {
return new WP_Error('empty_user_login', __('Nu se poate crea un utilizator cu un nume de autentificare gol.') );
}
if ( ! $update && username_exists( $user_login ) ) {
return new WP_Error( 'existing_user_login', __( 'Ne pare rău, acest nume de utilizator există deja!' ) );
}
Asta înseamnă că dacă nu primești înapoi un obiect WP_Error
, ar trebui să se execute. Poți încerca numeroșii filtri din funcția de bază pentru a identifica unde se întrerupe dacă hook-ul tău nu se execută. Cel care rulează înainte de returnarea erorii, este următorul:
apply_filters( 'pre_user_login', $sanitized_user_login );
Dacă acesta funcționează, atunci plugin-ul pur și simplu nu verifică is_wp_error()
și ignoră apelul eșuat de inserare.
<?php /** Plugin Name: Test if wp_insert_user() filters work */
add_filter( 'pre_user_login', function( $user )
{
var_dump( current_filter()." funcționează corect" );
return $user;
} );
