[WordPress] Corriger l’erreur PHP Warning: Missing argument 2 for wpdb::prepare()

Wordpress-erreur-PHP-mise-a-jour-3.5

Vous venez de mettre à jour votre WordPress vers la version 3.5 ou plus? Vous avez probablement pris en pleine figure l'erreur PHP “PHP Warning: Missing argument 2 for wpdb::prepare().” Pas de panique, votre blog n'est pas cassé ! Depuis la dernière version de WP, certaines failles de sécurité ont été corrigées et ce message préventif de PHP signifie qu'il manque un argument à la fonction $wpdb->prepare(), ce qui peut potentiellement exposer votre site à de l'injection SQL (SQLi), une méthode de hack pas franchement sympa.

$wpdb->prepare() est censée prendre 2 arguments, comme par exemple :

$wpdb->prepare( "SELECT * FROM table WHERE id = %d", $id );

Pas mal de développeurs de thèmes et de plugins ne se souciaient pas de cette syntaxe et fournissaient un seul paramètre comme par exemple :

$wpdb->prepare( "SELECT * FROM table WHERE id = $id" );

Deux solutions pour supprimer la vilaine erreur PHP:

1) Empêcher l'affichage des erreurs PHP, solution que je déconseille, on cache les symptomes mais on ne guérit pas le mal. Pour cela, ajouter la ligne suivante à votre fichier wp-config.php situé à la racine de votre blog.

@ini_set('display_errors', 0);

ATTENTION de bien enregistrer wp-config.php en format UTF-8 après modification avant de renvoyer sur votre FTP sinon votre blog ne chargera plus.

2) Rajouter un argument comme dans la première ligne de code de ce billet. Pas toujours facile de lire le code de nos amis développeurs donc pour ma part j'attends la mise à jour de mon plugin ShareBar qui était à l'origine de l'erreur. Si c'est dans votre thème que l'erreur réside, une petite édition de functions.php devrait solutionner le problème.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *