Ciao a tutti,
oggi vogliamo parlarvi di un funzione di WordPress che è stata deprecata in WordPress 4.0 – Benny. La funzione in questione è like_escape().
A cosa serve questa funzione?
La function like_escape() di WordPress prende come argomento una stringa e ci ritorna in output una stringa “pulita” che possiamo utilizzare con il comando LIKE di una query SQL.
Postiamo per chiarezza un esempio di utilzzo della function preso dal Codex di WordPress:
// Parse a suspicious URL so we can just get the main parts. $url = parse_url( $suspiciuos_link ); // Strip out "http://" and any url parameters. if ( isset( $url['path'] ) ) { $link = $url['host'] . $url['path']; } else { $link = $url['host']; } // First, escape the link for use in our SQL query. $link = esc_sql( $link ); // We are using this in a LIKE statement, so escape it for that as well. $link = like_escape( $link ); // Add wildcards, since we are searching within comment text. $link = '%' . $link . '%'; global $wpdb; // Search local spam for comments or author url containing this link. $matching_comments = $wpdb->get_var( " SELECT COUNT(*) FROM $wpdb->comments WHERE (comment_content LIKE '$link' OR comment_author_url LIKE '$link') AND comment_approved = 'spam' " ); echo $matching_comments . ' spam comments found with this link.';
Cosa usare al posto di questa function?
Per ottenere lo stesso risultato, con la nuova versione di WordPress 4.0 è possibile istanziare la classe wpdb ed utilizzare il metodo esc_like in questo modo:
<?php $like = $wpdb->esc_like( $text ); ?>
Una volta utilizzato questo metodo ricordatevi sempre di utilizzare il metodo $ wpdb-> prepare () oppure la function esc_sql (). Questo è fondamentale darlo dopo l’utilizzo di $ wpdb-> esc_like (), per garantire la “pulizia” della stringa utilizzata nella nostra query.
Vediamo ora l’esempio precedente con l’utilizzo della classe wpdb sempre estratto dal Codex ufficiale di WordPress:
// Parse a suspicious URL so we can just get the main parts. $url = parse_url( $suspicious_link ); // Strip out "http://" and any url parameters. if ( isset( $url['path'] ) ) { $link = $url['host'] . $url['path']; } else { $link = $url['host']; } global $wpdb; // First, escape the link for use in a LIKE statement. $link = $wpdb->esc_like( $link ); // Add wildcards, since we are searching within comment text. $link = '%' . $link . '%'; // Create a SQL statement with placeholders for the string input. $sql = " SELECT COUNT(*) FROM $wpdb->comments WHERE (comment_content LIKE %s OR comment_author_url LIKE %s) AND comment_approved = 'spam' "; // Prepare the SQL statement so the string input gets escaped for security. $sql = $wpdb->prepare( $sql, $link, $link ); // Search local spam for comments or author url containing this link. $matching_comments = $wpdb->get_var( $sql ); echo $matching_comments . ' spam comments found with this link.';
Conclusioni
Con WordPress 4.0 come avete potuto vedere sono stati apportati alcuni cambiamenti al nostro CMS preferito e più utilizzato dagli utenti. Anche dal punto di vista più tecnico, anche per gli sviluppatori, come vi abbiamo detto nell’articolo di presentazione di WordPress 4.0 – Benny sono state apportate delle modifiche e questo rientra in questo ambito.
Avete verificato che alcuni plugin utilizzano questa function e che risulta incompatibile con la nuova versione di WordPress?
Segnalatecelo e condividete il vostro dubbio con noi in modo tale da poter rendere fruibile a tutti la soluzione al problema!
Buon WordPress a tutti, al prossimo articolo! 🙂