Écrire des requêtes personnalisées dans WordPress

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.


Pourquoi utiliser des requêtes personnalisées?

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).


le wpdb Classe

Cette classe globale WordPress est la clé pour utiliser des requêtes. En fait, chaque fonction utilise cette classe.


En utilisant 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);

Requêtes préparées

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'))) ;

Définition des messages d'erreur

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 ();

Contrôle du cache

La suppression du cache peut être faite avec le affleurer une fonction.

 $ wpdb-> flush ();

Insérer des données

 $ 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:

  • le nom de la table pour insérer des données dans
  • les données à insérer (colonne => paires de valeurs) sans échapper
  • un tableau de formats à mapper sur chacune des valeurs de $ data. S'il n'est pas présent, toutes les valeurs seront traitées comme des chaînes.

Mise à jour des données

 $ 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:

  • nom de la table
  • Les données
  • où conditions
  • format
  • où_format

Informations sur la colonne

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);
  • Tapez: les informations que vous voulez récupérer, quelques exemples sont ici
    • prénom - nom de colonne (par défaut)
    • table - nom de la table à laquelle appartient la colonne
    • longueur maximale - longueur maximale de la colonne
    • not_null - 1 si la colonne ne peut pas être NULL
    • plus peut être trouvé dans la référence WordPress Codex WPDB
  • Décalage: spécifiez la colonne à partir de laquelle extraire les informations (0 est la première colonne)

Référencement des tables WordPress

Les 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.