Supporto » Funzionalità = Plugin » [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?

Stai visualizzando 3 risposte - dal 1 al 3 (di 3 totali)
  • Ciao,

    la funzione che richiama add_user_meta l’hai registrata all’hook register_new_user?

    In questo caso, prova a diminuire la priorità nell’add_action, qualcosa tipo

    add_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.

    Chi ha creato la discussione frigor

    (@frigor)

    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 alla register_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 mail wp_new_user_notification non è una funzione ma un plugin che personalizza la funzione originale.

    Chi ha creato la discussione frigor

    (@frigor)

    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 alla register_new_user con priorità 9.
    Tutto ok… Funziona!!
    Grazie.

Stai visualizzando 3 risposte - dal 1 al 3 (di 3 totali)
  • Il topic ‘[SOLVED] get_user_meta non è aggiornato nei plugin’ è chiuso a nuove risposte.