WordPress Notice: get_currentuserinfo is deprecated since version 4.5.0 Risolto

get_currentuserinfo-is-deprecated-since-version-4-5-0

Soluzione al problema Notice: get_currentuserinfo is deprecated since version 4.5.0 – Use wp_get_current_user() instead su WordPress. Questo è il messaggio che parecchi di noi, utilizzatori di WordPress, hanno visto apparire dopo l’aggiornamento alla versione 4.6 del CMS più amato ed utilizzato del mondo. Non si tratta di un errore ma di un semplice avviso che mette al corrente del fatto che una particolare istruzione php (get_currentuserinfo) è stata deprecata e ci invita a sostituirla con wp_get_current_user () . In effetti, se non fosse per l’avviso che compare nel backend, nell’elenco degli articoli e delle pagine, non ce ne accorgeremmo nemmeno visto che il sito funziona lo stesso. Ma se volete eliminare la notifica, questo è il metodo da seguire.

[amazon_link asins=’B00QJDO0QC’ template=’ProductAd’ store=’flaviowebnet-21′ marketplace=’IT’ link_id=’ebf84e94-eb18-11e6-ac4a-631f07186451′]

Sostituire get_currentuserinfo con wp_get_current_user ()

Per far scomparire l’avviso, occorre sostituire l’istruzione deprecata get_currentuserinfo con l’istruzione wp_get_current_user () all’interno di un file .php presente all’interno di una qualche cartella del nostro sito.

Cosa ci occorre:

  • Un editor per manipolare il codice php tipo notepad++
  • Un programma per il trasferimento da e verso il server dei files, tipo Filezilla. In alternativa va benissimo anche un eventuale pannello per il trasferimento dei files messo a disposizione dall’hosting

Come sostituire get_currentuserinfo con wp_get_current_user ()

L’alert che ci compare sotto ogni articolo o pagina, ci rimanda ad una determinata riga del file functions.php presente nel percorso /wp-includes/functions.php. Se andiamo ad aprire questo file non troveremo il codice dove è presente l’istruzione da sostituire, ma un istruzione che stampa a video l’alert, come sotto.

trigger_error( sprintf( __(‘%1$s is get_currentuserinfo is <strong>deprecated</strong> since version 4.5! Use wp_get_current_user() instead.’), $function, $version, $replacement ) );

Non è questo il posto dove andare ad effettuare la modifica.

In quale file si annida l’istruzione get_currentuserinfo da modificare?

Non è immediata l’individuazione del file da modificare. Bisogna armarsi di santa pazienza e procedere nel modo seguente.

Innanzi tutto aprite il pannello di amministrazione di WordPress e portatevi sui Plugin.

Adesso aprite una seconda scheda del browser e visualizzate, sempre da pannello di amministrazione o bacheca, l’elenco degli articoli o delle pagine.

Ora disattivate un plugin alla volta e, refreshando con F5 la pagina con l’elenco degli articoli, verificate di volta in volta se la notifica scompare.

Quando la notifica scomparirà avrete individuato il plugin che causa l’errore. E’ l’ultimo che avete disattivato.

Adesso riattivatelo perché ci serve per effettuare la verifica e controllare se, dopo la modifica, il messaggio di errore scompare.

Infine conservate un backup dei files del plugin che risulterà utile se qualcosa andasse storto.

Come trovare l’istruzione get_currentuserinfo da modificare?

Adesso con Filezilla, scaricate sul vostro pc tutta la cartella del plugin incriminato e aprite con l’editor di testo, uno ad uno tutti i files php presenti.

Vi do un suggerimento: nei due casi capitati a me, i file interessati si trovavano nella cartella “core”, una sottocartella del plugin. Provate a vedere, in prima battuta, se il file contenente l’istruzione da modificare stia li dentro.

Adesso che avete aperto con il notepad++ i files, iniziate la ricerca con la funzione presente nel programma chiamata “trova” o “cerca”, scrivendo nell’apposita casellina “get_currentuserinfo”. Ogni volta che la troverete dovrete sostituirla in questa maniera:

  • Se trovi get_currentinfo tra virgolette senza le parentesi () alla fine sostituisci l’istruzione con wp_get_current_user
  • Se trovi get_currentinfo () con le parentesi, sostituiscila con wp_get_current_user ().

Ecco un esempio:

PRIMA

if ( function_exists( ‘get_currentuserinfo‘ ) ) {
get_currentuserinfo();

DOPO

if ( function_exists( ‘wp_get_current_user‘ ) ) {
wp_get_current_user ();

L’istruzione deprecata da sostituire potrebbe essere presente in più di un file. Agite empiricamente: sostituire, caricare il file, verificare se l’alert è scomparso. Quando l’alert sarà scomparso avrete terminato la procedura.

Plugin Interessati

Di solito, i plugin responsabili della nascita di questo alert, sono quelli non aggiornati dallo sviluppatore. O semplicemente quelli che non abbiamo aggiornato.

Se aveste dei plugin non aggiornati, prima di mettervi all’opera aggiornateli. L’avviso potrebbe scomparire semplicemente facendo questo.

Se invece i plugin sono tutti aggiornati, o se abbiamo installato dei plugin a pagamento per cui il supporto agli aggiornamenti è terminato e la versione che utilizziamo è vecchia, bisognerà procedere come descritto sopra.

Personalmente ho dovuto compiere questa procedura per i plugin WP-Bakery Visual Composer e per Mail Poet.

Su WP-Bakery Visual Composer il file da aggiornare si chiama class-wpb-map.php e lo trovi nel percorso wp-content\plugins\js_composer\include\classes\core.

Sul Mail Poet invece è il base.php che trovi nel percorso wp-content/plugins/wysija-newsletter/core.

Altri hanno trovato il file annidato nel plugin Google Analytics per Yoast nel file del percorso wp-content\plugins\google-analytics-for-wordpress\frontend\abstract-class-tracking.php

Casi Particolari

Alcuni sostengono di aver trovato l’istruzione deprecata da sostituire get_currentuserinfo nell’header. Potrebbe essere plausibile nel caso di temi non aggiornati.

Per non impazzire a trovare l’errore, nel caso la disattivazione del plugin non risolva il problema, è possibile seguire la procedura sotto descritta:

Aprire wp-includes\functions.php ed aggiungere temporaneamente un dump dello stack, proprio sopra la riga dove viene generato questo errore.

L'istruzione da inserire è:
debug_print_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);

Questo mostrerà lo stack di chiamate, che dovrebbe dare un’idea di quale file genera l’errore. Ricordatevi di eliminare l’istruzione dopo aver effettuato il debug!

Questa soluzione viene utilizzata comunemente per trovare gli errori logici del sistema, attivando la modalità “debug”. Non l’ho utilizzata in questo caso perché me ne sono ricordato solo dopo aver risolto il problema.

Eccoci dunque alla fine dell’articolo. Spero dunque che a questo punto il problema di wordpress, evidenziato dal messaggio get_currentuserinfo is deprecated since version 4.5.0 – Use wp_get_current_user() instead, si sia risolto anche per voi.

Be the first to comment

Leave a comment

Il tuo indirizzo email non sarà pubblicato.


*