En tant que développeur WordPress qui crée des produits hautement personnalisés pour mes clients, je me suis retrouvé à rencontrer encore et encore le même problème lorsque je tente de créer des scripts PHP dans le cadre WordPress. J'adore utiliser la fonctionnalité intégrée de WordPress, mais j'ai continué à rencontrer les mêmes messages d'erreur encore et encore: «Appelez à la méthode indéfinie…» ou «Impossible d'ouvrir le flux».
Ensuite, vous partez à la recherche des fichiers appropriés que vous devez inclure, exiger, inclure_once ou require_once, en fonction de vos besoins. Une fois que vous avez trouvé le bon fichier, généralement un document PHP dans le dossier WP-incluse, par exemple, vous devez l'inclure / l'exiger au début de votre script - souvent uniquement pour trouver un autre «appel à une méthode indéfinie…»
Pour gagner du temps et vous permettre de commencer à créer du code
maintenant
, pas après les heures (ou les jours) de googler une solution, j'ai créé un script simple avec lequel je commence tous mes fichiers personnalisés. Il gère tous les fichiers appropriés dont j'ai besoin pour 99% de mon développement.
Caveat
Je ne recommande que l'utilisation pendant que vous développez votre plugin, vos thèmes ou vos scripts, puis plus tard, avant d'aller à la production, de trouver les fichiers dont vous avez réellement besoin. Je fais
pas vous recommande de garder ce script en cours d'exécution tout le temps car il fait des appels inutiles pour les fichiers dont vous n'avez probablement pas besoin.
Je vais vous guider à travers ce script afin que vous puissiez voir ce que je fais et pourquoi. Cela peut également fonctionner comme un outil de référence plus tard.
Oubliez l'abspath - faites votre propre chemin
J'aime toujours avoir la définition de l'abspath, mais il est frappé ou manqué avec certains scripts et installations WordPress. J'utilisais le simple
si
Testez pour vérifier si l'abspath est défini ou non, mais cela ne fonctionne pas toujours non plus:
[SourceCode Language = ”Php”]
/ * Remarque: c'est ce que je ne fais plus * / /
// définir l'abspathe
if (! défini (‘Abspath’))}
définir («Abspath», dirname (___ file___). «/»);
}[/ SourceCode]
Au lieu de cela, je crée mon propre chemin vers mon installation WordPress qui est beaucoup plus stable:
[SourceCode Language = ”Php”]
$ localisation = $ _Server [‘Document_Root’];
inclure ($ emplacement. «/wp-config.php»);
inclure ($ localisation. «/wp-wad.php»);
inclure ($ emplacement. «/wp-cludes/pluggable.php»);
[/ SourceCode]
Cela suppose que votre installation WordPress est à l'origine de votre site Web, c'est-à-dire www.yoursite.com
Si ce n'est pas le cas, ajoutez simplement la chaîne à votre variable de localisation $ comme ceci:
[SourceCode Language = ”Php”]
$ Location = $ _Server [‘Document_Root’]. «/ Votre WP-install»;
[/ SourceCode]
les trois grands
D'après mon expérience, il y a trois fichiers qui causent tous mes problèmes lorsqu'il s'agit de configurer mes scripts. Je les appelle mes «trois grands» car une fois que je les inclurai ou les exige, la plupart de mes problèmes disparaissent en ce qui concerne les erreurs «appel à la méthode non définie». Ils sont:
- wp-config.php
- pluggable.php
- wp-wad.php
Une fois que vous les aurez, vous constaterez que la plupart de vos erreurs disparaissent.
[SourceCode Language = ”Php”]
// Obtenez les trois grands
inclure (ABSPATH. «WP-Config.php»);
inclure (abspath. «wp-wad.php»);
inclure (abspath. «WP-includes / pluggable.php»);
[/ SourceCode]
Global $ wpdb
Une autre chose utile à faire est de vous assurer que votre $ WPDB est une variable globale. Cela permet à toutes les fonctions que vous créez pour avoir accès aux fonctionnalités de requête de la base de données WordPress. Cela peut être un énorme gain de temps.
Parce que vous avez inclus les fichiers WP-Config.php et WP-db.php, vous ne devriez pas avoir de problèmes pour que WPDB fonctionne correctement, mais j'aime toujours exécuter un
si Test pour vérifier d'abord:
[SourceCode Language = ”Php”]
// Obtenez les quatre grands
Global $ WPDB;
if (! isset ($ wpdb))
{
inclure ($ emplacement. «/wp-config.php»);
inclure ($ localisation. «WP-includes / wp-db.php»);
}[/ SourceCode]
Testez le script
Si vous commencez par une nouvelle installation de WordPress, vous n'avez qu'un seul utilisateur d'administration. Donc, il ne sert à rien d'essayer de se connecter à la base de données WordPress et aux utilisateurs de requête. J'ai construit ce test simple pour voir si nous nous connectons correctement. Si c'est le cas, vous verrez votre nom et votre adresse e-mail enregistrés auprès de WordPress dans un tableau:
[SourceCode Language = ”Php”]
/ *
Le test ci-dessus inclut les déclarations qui fonctionnent par
Énumérer tous les administrateurs et leur e-mail
adresses dans un tableau.
* /
// Démarrer le test
$ args = array (// Configurez la requête pour obtenir uniquement des administrateurs
«Rôle» => «administrateur»,
«Fields» => «all_with_meta»
));
$ query = get_users ($ args); // utilise l'appel get_users
// configure la table
echo '
beau nom | e-mail | tr> tr> > ';
// Pour chacun des administrateurs, faites une rangée de table
ForEach ($ Query As $ Query) {
Echo «». $ query-> user_nicename. ‘ | user_email. »»> ». $ query-> user_email. ‘ | ’;
} // End Forach
ECHO ‘ Table>’; // Fermez la balise de table
// Test de fin - commentez ou supprimez d'ici au «Test de début» ci-dessus
[/ SourceCode]
Si le test fonctionne et que vous voyez votre nom et votre adresse e-mail, supprimez simplement notre commentaire du script de test et commencez à coder!
Vous pouvez supprimer ce fichier PHP n'importe où dans les dossiers WordPress et cela fonctionnera. Ainsi, pour les tests initiaux et la programmation, ce script peut vous faire économiser des tonnes de temps, autrement, le dépannage des problèmes techniques de base.
Encore une fois, vous voudrez peut-être faire des travaux de détail une fois que vos fonctions fonctionnent correctement et n'incluent que les fichiers absolument nécessaires. Si vous n'avez pas besoin d'inclure le fichier wp-config.php, par exemple, non! Commentez simplement le code, ligne par ligne et voyez si cela fonctionne correctement. Gardez ce dont vous avez besoin, perdez le reste.
J'espère que cela vous fera gagner beaucoup de temps et vous permettra de vous concentrer sur le codage, plutôt que sur la cartographie de base des fichiers requis pour le développement WordPress.
Voici le script complet pour une référence facile. Copiez simplement, enregistrez le fichier partout où il est nécessaire et amusez-vous à faire du travail:
[SourceCode Language = ”Php”]
Php
/ * La magie de Justyn
Supposons que vous utilisez le dossier racine de votre serveur pour votre
WordPress Install. Sinon, ajoutez simplement le sous-fichier où pour
WordPress que vous utilisez.
Par exemple, ajoutez le sous-dossier à la variable de localisation $:
$ Location = $ _Server [‘Document_Root’]. «/ Votre sous-folder»;
* /
$ localisation = $ _Server [‘Document_Root’];
inclure ($ emplacement. «/wp-config.php»);
inclure ($ localisation. «/wp-wad.php»);
inclure ($ emplacement. «/wp-cludes/pluggable.php»);
Global $ WPDB;
if (! isset ($ wpdb))
{
inclure ($ emplacement. «/wp-config.php»);
include ($ localisation. «/wp-includes/wp-db.php»);
}/ *
Le test ci-dessus inclut les déclarations qui fonctionnent par
Énumérer tous les administrateurs et leur e-mail
adresses dans un tableau.
* /
// Démarrer le test
$ args = array (// Configurez la requête pour obtenir uniquement des administrateurs
«Rôle» => «administrateur»,
«Fields» => «all_with_meta»
));
$ query = get_users ($ args); // utilise l'appel get_users
// configure la table
echo ' beau nom | e-mail | tr> tr> > ';
// Pour chacun des administrateurs, faites une rangée de table
ForEach ($ Query As $ Query) {
Echo «». $ query-> user_nicename. ‘ | user_email. »»> ». $ query-> user_email. ‘ | ’;
} // End Forach
ECHO ‘ Table>’; // Fermez la balise de table
// Test de fin - commentez ou supprimez d'ici au «Test de début» ci-dessus
?>
[/ SourceCode]
Souhaitez-vous approfondir un peu plus dans PHP? Consultez notre site partenaire, phpmaster.com.
Les questions fréquemment posées (FAQ) sur WordPress incluent / nécessitent un script
Quelle est la différence entre inclure et exiger dans WordPress?
Dans WordPress, les deux incluent et exigent sont utilisés pour inclure un fichier dans un autre script PHP. La principale différence réside dans la façon dont ils gèrent l'échec. Si le fichier n'est pas trouvé, inclure émettra un avertissement mais permettra au script de continuer, tandis que l'exigence provoquera une erreur fatale et arrête le script. Par conséquent, l'utilisation requise lorsque le fichier est nécessaire pour l'exécution de l'application et que l'utilisation inclut lorsque le fichier n'est pas obligatoire.
Comment puis-je utiliser le script include / requise pour la sécurité dans WordPress?
Le script include / requis peut être utilisé pour améliorer la sécurité de votre site WordPress en incluant des fichiers PHP liés à la sécurité. Par exemple, vous pouvez inclure un fichier qui contient des fonctions pour désinfecter la saisie des utilisateurs, vérifier les autorisations des utilisateurs ou prévenir les attaques d'injection SQL. Assurez-vous toujours que le chemin du fichier inclus est correct et sécurisé pour éviter les vulnérabilités d'inclusion de fichiers.
Pourquoi mon WPDB ne fonctionne-t-il pas ou ne montre rien dans les messages?
Il pourrait y avoir plusieurs raisons pour lesquelles WPDB ne fonctionne pas comme prévu. Cela peut être dû à une erreur de syntaxe, à des informations d'identification de base de données incorrectes ou à un problème avec le serveur de base de données. Assurez-vous que vous avez inclus le fichier wp-wad.php au début de votre script pour utiliser la classe WPDB. Vérifiez également les erreurs de votre requête SQL et assurez-vous qu'elle est correctement préparée pour empêcher les attaques d'injection SQL.
Qu'est-ce que l'abspath dans WordPress et comment puis-je l'utiliser?
Abspath est une constante dans WordPress qui contient le chemin absolu vers le répertoire WordPress. Il est souvent utilisé dans les instructions incluent ou nécessite des instructions pour inclure des fichiers du répertoire WordPress. Pour l'utiliser, ajoutez simplement l'abspath sur le chemin relatif du fichier. Par exemple, nécessite (Abspath. «WP-Config.php»); inclura le fichier wp-config.php.
Comment puis-je ajouter correctement JavaScript à WordPress?
Pour ajouter correctement JavaScript à WordPress, vous devez utiliser la fonction WP_ENQUEUE_Script. Cette fonction vous permet d'inclure un fichier JavaScript dans l'en-tête ou le pied de page WordPress, de spécifier les dépendances et de contrôler le versioning du fichier. Utilisez toujours wp_enqueue_script dans le fichier functions.php ou un plugin, et non directement dans les fichiers en-tête.php ou pied.php.
Pourquoi mon WPDB ne se charge pas?
Si votre WPDB est-il Ne pas charger, cela pourrait être dû à une déclaration globale manquante dans votre fonction. La classe WPDB est une variable globale dans WordPress, vous devez donc le déclarer global avant de l'utiliser dans une fonction. Par exemple, Global $ WPDB; Au début de votre fonction, devrait résoudre le problème.
Comment puis-je utiliser le script include / exiger pour inclure un fichier CSS dans WordPress?
Pour inclure un fichier CSS dans WordPress, vous devez Utilisez la fonction WP_ENQUEUE_STYLE, pas le script Inclure ou Exiger. La fonction WP_ENQUEUE_STYLE vous permet d'inclure un fichier CSS dans l'en-tête WordPress, de spécifier les dépendances et de contrôler le versioning du fichier. Utilisez toujours WP_ENQUEUE_STYLE dans le fichier functions.php ou un plugin, et non directement dans le fichier en-tête.php.
Puis-je utiliser le script include / exigé pour inclure un fichier PHP dans un message WordPress?
Non, vous ne pouvez pas utiliser le script Inclut ou Exiger pour inclure un fichier PHP dans une publication WordPress. Les publications WordPress ne prennent pas en charge le code PHP pour des raisons de sécurité. Si vous devez inclure un fichier PHP dans un article, vous devez créer un shortcode qui inclut le fichier et utiliser le shortcode dans le post.
Comment puis-je utiliser le script include / exigé pour inclure un fichier à partir d'un Plugin dans WordPress?
Pour inclure un fichier à partir d'un plugin dans WordPress, vous pouvez utiliser la fonction Plugin_dir_path en combinaison avec le script inclue ou nécessite. La fonction plugin_dir_path renvoie le chemin absolu vers le répertoire d'un plugin. Par exemple, include (plugin_dir_path (fichier). «Myfile.php»); Inclura le fichier myfile.php du même répertoire que le fichier actuel.
Puis-je utiliser le script include / exigé pour inclure un fichier à partir d'un thème dans wordpress?
pour inclure un fichier À partir d'un thème de WordPress, vous pouvez utiliser la fonction get_template_directory en combinaison avec le script include ou nécessite. La fonction get_template_directory renvoie le chemin absolu vers le répertoire du thème actuel. Par exemple, include (get_template_directory (). «/Myfile.php»); inclura le fichier myfile.php du répertoire de thème actuel.
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!