[SOLVED] get_user_meta non è aggiornato nei plugin
-
Salve.
Sono nuovo in WP e posso fare una domanda da inesperto ma mi accade questo:
Ho creato una pagina (in risposta ad una app per smartphone) che registra (“register_new_user“) l’utente ed invia una mail personalizzata di conferma tramite un plugin (“custom_new_user_email.php“) di modifica della funzione “wp_new_user_notification“. Funziona tutto tranne una cosa.
Nella fase di registrazione inserisco (“add_user_meta“) delle meta informazioni che riguardano l’utente (tipo “device_model”, “os_version”, ecc.). Vorrei inviare nella mail di conferma anche alcune di queste informazioni ma la lettura delle stesse (“get_user_meta“) NON PRODUCE RISULTATO!!!Ho fatto diversi test ed ho visto che:
– gli stessi metadati sono leggibili nella fase di registrazione (appena inseriti, infatti, provo a vedere se ci sono ed il comando get_user_meta me li restituisce.
– nel plugin (“custom_new_user_email.php“) riesco a leggere i metadati inseriti automaticamente da WP (tipo “nickname” ecc.) ma non i miei personalizzati (“device_model” ecc.).
– se faccio una interrogazione su un altro utente (già registrato) riesco a leggere tutte le informazioni (anche le mie personalizzate!).
– ho provato a fare una query diretta $wpdb->query con gli stessi risultati.Mi potete aiutare?
-
Questo topic è stato modificato 9 anni fa da
Cristiano Zanca.
-
Questo topic è stato modificato 9 anni fa da
-
Ciao,
la funzione che richiama
add_user_meta
l’hai registrata all’hookregister_new_user
?In questo caso, prova a diminuire la priorità nell’
add_action
, qualcosa tipoadd_action('register_new_user', 'funzione_che_chiama_add_user_meta', 9);
Dato che
wp_send_new_user_notifications
viene agganciato allo stesso hook (sorgente), potrebbe essere che la tua funzione viene richiamata dopo aver mandato la notifica.-
Questa risposta è stata modificata 9 anni fa da
Giustino Borzacchiello.
Ciao Giustino.
Grazie per la risposta.
Anche se non ho potuto fare direttamente come mi dicevi, mi hai dato lo spunto per capire dove stava il problema. La mia funzione chiama :
1)$user_id = register_new_user($user_name, $user_name);
e poi:
2)add_user_meta($user_id, '_device_model', $device_model, true);
Quindi, dato che la funzione di notifica con email e agganciata allaregister_new_user
questa viene processata prima dell’inserimento dei metadati!
Il problema ora è che non posso inserire i metadati prima della registrazione dell’utente (visto che mi serve il suo ID)… come posso quindi fare in modo che l’aggiunta dei metadati avvenga DOPO la registrazione ma PRIMA della spedizione della mail?
Considera che la funzione di spedizione della mailwp_new_user_notification
non è una funzione ma un plugin che personalizza la funzione originale.Ciao Giustino.
Tutto risolto!!. Ho capito meglio cosa mi dicevi ed ho fatto esattamente così.
Nel mio codice iniziale non avevo una funzione dedicata all’inserimento dei metadati.
Ho quindi creato una funzione ad hoc e l’ho agganciata allaregister_new_user
con priorità 9.
Tutto ok… Funziona!!
Grazie. -
Questa risposta è stata modificata 9 anni fa da
- Il topic ‘[SOLVED] get_user_meta non è aggiornato nei plugin’ è chiuso a nuove risposte.