In questo articolo riprendiamo l’argomento affrontato nell’articolo relativo alla function like_escape() deprecata in WordPress 4.0 – Benny rispetto al plugin Gravityforms (l’errore l’abbiamo riscontrato con la versione 1.8.9 di Gravityforms ma probabilmente potrebbe presentarsi con altre versioni non aggiornate).
Problema riscontrato
Utilizziamo il plugin Gravityforms per molti progetti, è un plugin molto completo e funzionale. Ci siamo resi conto che sui siti web in cui abbiamo aggiornato WordPress alla versione 4 ma non Gravityforms al momento di lasciare un messaggio in una form, lo stesso veniva salvato in amministrazione, il cliente viene reindirizzato nella thank you page definita ma in alto viene stampato un errore relativo al fatto che la function like_escape() è stata deprecata con indicazioni relative al file functions.php all’interno della cartella wp-includes di WordPress.
Analisi del problema
Chiaramente l’errore ci indica che esiste da qualche parte nel plugin Gravityforms la chiamata alla funzione like_escape() e quindi ecco perché l’errore è segnalato alla riga 3201 del file wp-includes/functions.php.
Di seguito riporto la function di wordpress che ci segnala l’errore relativo a tutte le funzioni deprecate:
function _deprecated_function( $function, $version, $replacement = null ) { /** * Fires when a deprecated function is called. * * @since 2.5.0 * * @param string $function The function that was called. * @param string $replacement The function that should have been called. * @param string $version The version of WordPress that deprecated the function. */ do_action( 'deprecated_function_run', $function, $replacement, $version ); /** * Filter whether to trigger an error for deprecated functions. * * @since 2.5.0 * * @param bool $trigger Whether to trigger the error for deprecated functions. Default true. */ if ( WP_DEBUG && apply_filters( 'deprecated_function_trigger_error', true ) ) { if ( function_exists( '__' ) ) { if ( ! is_null( $replacement ) ) trigger_error( sprintf( __('%1$s is deprecated since version %2$s! Use %3$s instead.'), $function, $version, $replacement ) ); else trigger_error( sprintf( __('%1$s is deprecated since version %2$s with no alternative available.'), $function, $version ) ); } else { if ( ! is_null( $replacement ) ) trigger_error( sprintf( '%1$s is deprecated since version %2$s! Use %3$s instead.', $function, $version, $replacement ) ); else trigger_error( sprintf( '%1$s is deprecated since version %2$s with no alternative available.', $function, $version ) ); } } }
Soluzione
Per risolvere il problema potete aggiornare il plugin Gravityforms all’ultima versione rilasciata nel quale è stata sostituita la definizione della function utilizzando la classe wpdb csì come abbiamo descritto nel nostro articolo precedente
Se non potete aggiornare subito la versione di Gravityforms vi illustriamo come poter far funzionare anche versioni precedenti del plugin prima dell’aggiornamento.
Nel file presente all’interno della cartella: wp-content/plugins/nomecartelladelplugin/includes/webapi/webapi.php effettuate una ricerca per la parola chiave like_escape e sostituite la function con l’istanza della classe wpdb in questo modo:
$wpdb->esc_like($like)
Conclusioni
Il problema come segnalato l’abbiamo riscontrato con la versione 1.8.9 di Gravityforms. Fateci sapere fino a che versione riscontrate questo problema legato all’aggiornamento di Worpress alla versione 4.0 così possiamo comunicarlo ai nostri lettori.
Buon WordPress a tutti