Maison >Tutoriel CMS >WordPresse >Travailler avec des bases de données dans WordPress

Travailler avec des bases de données dans WordPress

Christopher Nolan
Christopher Nolanoriginal
2025-02-15 09:52:11209parcourir

Guide d'interaction de la base de données WordPress: Master wpdb Class and Database Operation Skills

WordPress est livré avec un grand nombre de fonctions d'interaction de base de données. Cependant, surtout lorsque vous traitez des tables personnalisées, nous devons parfois faire des choses qui ne peuvent pas être réalisées par les fonctionnalités natives de WordPress. WP_Query wp_insert_post update_post_meta get_posts

Ce tutoriel explorera en profondeur la classe la plus importante de l'interaction de la base de données WordPress -

et partagera quelques conseils de développement. Nous couvrirons les fonctions Working with Databases in WordPress utilisées pour créer des tables personnalisées, mais ne couvrirons pas les bases de la création d'une base de données WordPress initiale.

wpdb Points clés: dbDelta

WordPress fournit une variété de fonctions d'interaction de base de données, y compris les classes et les fonctions connexes. Mais pour des besoins plus complexes, les développeurs peuvent utiliser des classes

ou créer des tables personnalisées.
    La classe
  • WP_Query est un outil clé pour gérer directement les bases de données WordPress. Pour éviter les noms de table à code dur dans les requêtes SQL, utilisez l'attribut wpdb fourni par WordPress pour améliorer la portabilité du code.
  • La classe
  • wpdb fournit également des méthodes auxiliaires pour les opérations de base de données, telles que prefix,
  • et
  • , qui sont plus sûres et plus spécifiques à la cas que la méthode générale wpdb. insert update Pour empêcher l'injection SQL, la classe get_row fournit une méthode query qui reçoit des chaînes de relevé SQL et des données qui doivent être échappées. Ceci est particulièrement important lorsque vous traitez de méthodes telles que
  • ou
  • . wpdb prepare La création de tables personnalisées est utile lorsque un contrôle plus granulaire des données est requis. Il est recommandé d'utiliser la fonction query pour créer des tables de base de données personnalisées et des mises à jour de schéma de table de processus. Pendant ce temps, stockez la version de la base de données dans le tableau get_results pour référence lors des futures mises à jour.
  • dbDelta options Utilisation de
  • catégorie

La classe wpdb est la classe la plus couramment utilisée lors du traitement des bases de données directement. Le manuel WordPress a expliqué les méthodes et propriétés de base de la classe en détail, et ne sera pas répétée ici. Nous nous concentrerons sur certaines des erreurs courantes que les développeurs WordPress font, comment les corriger et les meilleures pratiques lors de l'utilisation de classes

.

wpdb wpdb Évitez les noms de table du code dur dans les requêtes SQL wpdb

Certains développeurs supposent que le préfixe de table ne changera pas et n'utilisera pas la valeur par défaut . L'extrait de code suivant montre la mauvaise approche:

Si l'utilisateur modifie la préfixe de la table en une autre valeur, ce code est erroné. Ce problème peut être facilement résolu en utilisant l'attribut wp_:

<code class="language-php">global $wpdb;
$result = $wpdb->get_results('SELECT * FROM wp_posts LIMIT 10');</code>

Mieux encore, si vous avez affaire aux tables par défaut WordPress, vous pouvez y accéder directement en utilisant les propriétés dans wpdb. Chaque table par défaut WordPress est représentée par une propriété du même nom dans la classe wpdb (à l'exclusion des préfixes). Par exemple, supposons que le préfixe de table soit wp_:

  • $wpdb->posts correspondant à wp_posts table
  • $wpdb->postmeta correspondant à wp_postmeta table
  • $wpdb->users correspondant à wp_users table

Par conséquent, le code ci-dessus peut être encore amélioré:

<code class="language-php">global $wpdb;
$result = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10');</code>

Utiliser des méthodes auxiliaires spécifiques pour les opérations de base de données

Bien que la méthode query puisse gérer n'importe quelle requête SQL, il est préférable d'utiliser des méthodes auxiliaires plus appropriées, telles que insert, update, get_row, etc. Ces méthodes sont plus spécifiques et plus sûres, car les évasions et d'autres travaux sous-jacents sont déjà gérés par eux.

Déboguez correctement la requête de la base de données

Par défaut, les rapports d'erreur sont désactivés. wpdb fournit deux façons de changer l'état des rapports d'erreur: $wpdb->show_errors(); (on) et $wpdb->hide_errors(); (off). Si les deux WP_DEBUG et WP_DEBUG_DISPLAY sont définis sur true, la méthode show_errors est automatiquement appelée. La méthode $wpdb->print_error(); affichera les erreurs de la dernière requête quel que soit l'état du rapport d'erreur. Activer wp-config.php dans SAVEQUERIES pour stocker toutes les requêtes de base de données, le temps d'exécution et les emplacements d'appel dans l'attribut wpdb de la classe queries. Ces données peuvent être récupérées à l'aide de print_r( $wpdb->queries );. Notez que cela affecte les performances du site Web et n'est donc utilisé que si nécessaire.

Protéger les requêtes des attaques potentielles

pour protéger complètement le code des attaques d'injection SQL, wpdb fournit également une méthode prepare qui reçoit des chaînes de relevé SQL et des données qui doivent être échappées. Ceci est très important lorsqu'il s'agit de méthodes telles que query ou get_results.

<code class="language-php">global $wpdb;
$result = $wpdb->get_results('SELECT * FROM ' . $wpdb->posts . ' LIMIT 10');</code>
La méthode

prepare prend en charge deux syntaxes: sprintf et vsprintf.

Connectez-vous à une base de données distincte

Par défaut, la variable $wpdb est une instance de la classe wpdb, connectée à la base de données WordPress définie dans wp-config.php. Si vous souhaitez interagir avec une autre base de données, vous pouvez instancier une autre instance de classe wpdb. Le constructeur de la classe wpdb accepte quatre paramètres: nom d'utilisateur, mot de passe, nom de base de données et hôte de base de données.

<code class="language-php">$wpdb->prepare( $sql, $format... );</code>

Si le nom d'utilisateur, le mot de passe et l'hôte de la base de données sont les mêmes, modifiez simplement la base de données sélectionnée et utilisez la méthode $wpdb sur la variable select.

<code class="language-php">$mydb = new wpdb( 'username', 'password', 'my_database', 'localhost' );</code>

Utilisez des tables de base de données personnalisées

Les tables par défaut WordPress sont généralement suffisantes pour gérer la plupart des opérations complexes. Avec les types d'articles personnalisés, les métadonnées d'articles, la taxonomie personnalisée et les métadonnées à terme, vous pouvez faire presque n'importe quoi sans utiliser de tables personnalisées. Cependant, les tables personnalisées peuvent être utiles lorsque un contrôle plus granulaire sur les données traités par le plugin. Les avantages des tables personnalisées comprennent: un contrôle complet sur les structures de données, la séparation des préoccupations et l'efficacité.

en utilisant dbDelta

Lors de la création d'une table de base de données personnalisée, il est recommandé d'utiliser

pour gérer toutes les mises à jour initiales de création de table et de schéma de table. Le Core WordPress utilise également cette fonction pour gérer les mises à jour du schéma de base de données entre les versions. dbDelta

Lors de la mise à jour du schéma de table, vous pouvez utiliser l'action
<code class="language-php">global $wpdb;
$result = $wpdb->get_results('SELECT * FROM wp_posts LIMIT 10');</code>
pour vérifier la version de la base de données et mettre à jour le schéma de table si nécessaire.

plugin_loaded

Conclusion

WordPress ne se limite pas à la création de sites Web simples, il évolue rapidement vers un cadre d'application entièrement fonctionnel. L'extension WordPress devrait hiérarchiser les types de postes personnalisés et la taxonomie personnalisée. Cependant, lorsque un contrôle plus granulaire des données est nécessaire, les fonctions et les classes telles que

sont très importantes.

wpdb

(La partie FAQ est omise car elle est trop longue et ne correspond pas à l'objectif pseudo-original. La partie FAQ peut être régénérée au besoin.)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn