Avec des requêtes personnalisées, vous pouvez effectuer la lecture et / ou la manipulation des données souhaitées. Instantanément, un monde de nouvelles possibilités s'ouvre.
Les fonctionnalités de base de WordPress conviennent à la plupart des besoins simples, mais que feriez-vous si vous souhaitez implémenter certains besoins spécifiques? Vous écrivez un plugin peut-être? Ensuite, vous devriez apprendre à utiliser les requêtes SQL dans WordPress dès maintenant! Les références officielles se trouvent dans le Codex WordPress (requêtes personnalisées et classe WPDB).
wpdb
ClasseCette classe globale WordPress est la clé pour utiliser des requêtes. En fait, chaque fonction utilise cette classe.
question
La fonction de requête nécessite une chaîne contenant la requête personnalisée. La valeur de retour est un entier correspondant au nombre de lignes affectées / sélectionnées et false en cas d'erreur..
$ query = "SELECT COUNT (pomme) FROM fruits"; $ wpdb-> query ($ query);
Obtenir des résultats
Cette fonction obtient plusieurs lignes lors de l'exécution d'une requête. Par défaut, le résultat de la fonction est un tableau..
$ query = "SELECT * FROM wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id = wtt.term_id WHERE wtt.taxonomy = 'post_tag' AND wtt.count = 0"; $ wpdb-> get_results ($ query);
get_var
Cela renverra une variable de la base de données, mais le résultat complet de la requête sera mis en cache pour une utilisation ultérieure. Renvoie NULL si aucun résultat n'est trouvé..
$ query = "SELECT COUNT (*) FROM users"; $ wpdb-> get_var ($ query);
get_row
Une ligne complète sera renvoyée à la suite de la fonction, qui peut être un objet, un tableau associatif ou un tableau indexé numériquement. NULL est le résultat lorsqu'aucune donnée correspondante n'est trouvée. type_résultat
peut être OBJET
, ARRAY_A
ou ARRAY_N
(objet, tableau associatif ou tableau numéroté). Offset est un entier avec une valeur par défaut de 0.
$ query = "SELECT * FROM wp_posts WHERE post_type = 'post'"; $ wpdb-> get_row ($ query, ARRAY_A, 3);
get_col
Pour obtenir une colonne, utilisez cette fonction. La sortie sera un tableau dimensionnel. Un tableau vide sera retourné si aucun résultat n'est trouvé. Le deuxième paramètre est le décalage de colonne.
$ query = "SELECT * FROM wp_posts WHERE post_type = 'post'"; $ wpdb-> get_col ($ query, 3);
Selon le manuel php.net:
"Elles [requêtes préparées] peuvent être considérées comme une sorte de modèle compilé pour le code SQL qu'une application souhaite exécuter, qui peut être personnalisé à l'aide de paramètres variables."
Vous pouvez protéger les requêtes SQL contre les attaques par injection SQL. En bref, les données dans les requêtes doivent être protégées par SQL avant leur exécution pour éviter les attaques par injection. Cela peut être facilement fait avec la méthode prepare. Dans l'exemple suivant, les valeurs '10', 'singe' et 'pomme' seront échappées si elles sont utilisées dans cette méthode.
// Usage: $ wpdb-> prepare ('query' [, value_parameter, value_parameter…]); $ wpdb-> requête ($ wpdb-> prepare ("INSERT INTO test_table (post_id, animal, aliment)) VALEURS (% d,% s,% s)", tableau (10, 'singe', 'pomme'))) ;
Vous pouvez activer et désactiver les messages d’erreur avec show_errors
et hide_errors
fonctions, mais vous pouvez aussi imprimer:
$ wpdb-> show_errors (); $ wpdb-> hide_errors ();
La suppression du cache peut être faite avec le affleurer
une fonction.
$ wpdb-> flush ();
$ wpdb-> insert ($ table, $ data, $ format); $ wpdb-> insert ('aliments', tableau ('fruit' => 'pomme', 'année' => 2012), tableau ('% s', '% d'));
Les paramètres utilisés dans l'ordre sont:
$ data
. S'il n'est pas présent, toutes les valeurs seront traitées comme des chaînes.$ wpdb-> update ('aliments', tableau ('fruit' => 'pomme', // chaîne 'année' => 'valeur2' // entier (nombre)), tableau ('ID' => 1), tableau ('% s', // valeur1 '% d' // valeur2), tableau ('% d'));
Les paramètres utilisés dans l'ordre sont:
Vous pouvez obtenir des informations sur les colonnes du résultat le plus récent avec cette fonction. Quand une fonction a retourné un OBJET
et il y a des propriétés que vous ne connaissez pas beaucoup, cela peut être utile.
$ wpdb-> get_col_info ('type', offset);
prénom
- nom de colonne (par défaut)table
- nom de la table à laquelle appartient la colonnelongueur maximale
- longueur maximale de la colonnenot_null
- 1 si la colonne ne peut pas être NULLLes tables de base de données WordPress peuvent être référencées dans wpdb
classe. Ceci est très pratique car les noms de table peuvent être différents de ceux par défaut. Voici une liste de références de tables de base de données WordPress:
$ wpdb-> posts;
$ wpdb-> postmeta;
$ wpdb-> commentaires;
$ wpdb-> commentmeta;
$ wpdb-> termes;
$ wpdb-> term_taxonomy;
$ wpdb-> term_relationships;
$ wpdb-> utilisateurs;
$ wpdb-> usermeta;
$ wpdb-> liens;
$ wpdb-> options;
Notez que nous n'avons pas besoin d'inclure le préfixe, c'est l'avantage ici où le wpdb
la classe s'en occupe pour nous.
Là nous l'avons! Une référence pour les requêtes personnalisées dans WordPress, le tout à un seul endroit pour vous.