Hookul wp_create_user

16 sept. 2014, 14:10:28
Vizualizări: 21.2K
Voturi: 2

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?

1
Comentarii

ce încerci să faci?

Tomás Cot Tomás Cot
16 sept. 2014 14:56:54
Toate răspunsurile la întrebare 1
0

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;
} );
16 sept. 2014 14:52:33