Mon problème est quand j'inclus dans le fichier de plugin principal un fichier PHP ressemblant à ceci:
include(WP_PLUGIN_URL . '/wordpress-group-buying/ipn/paypal-ipn.php');
// or
include_once(WP_PLUGIN_URL . '/wordpress-group-buying/ipn/paypal-ipn.php');
// or
require(WP_PLUGIN_URL . '/wordpress-group-buying/ipn/paypal-ipn.php');
// or
require_once(WP_PLUGIN_URL . '/wordpress-group-buying/ipn/paypal-ipn.php');
et sur ce fichier, j'ai un appel à une fonction WordPress comme:
add_action('hook', 'callback');
et je reçois:
Erreur fatale: appel de la fonction non définie add_action ()
Maintenant, avant de dire "utiliser if(**function_exists**('add_action')){
" si je l'utilise, cela ne fonctionne tout simplement pas.
Questions:
- Quelle serait la bonne façon de faire cela?
- Quelles sont les différences entre
include
,include_once
,require
et quand dois - je utiliser sorcière?
plugin-development
functions
Bainternet
la source
la source
WP_PLUGIN_URL
dans votre code ci-dessus :)Réponses:
Nous arrivons tard à cette soirée, mais voici la méthode "WordPress": utilisez
plugin_dir_path( __FILE__ )
, par exemple:Notez que la fonction ne retourne la barre oblique de fin pour le filepath.
la source
__FILE__
, la sortie sera relative par rapport au fichier actuel depuis lequel vous l'appelez. Ainsi, si votreinclude
instruction est exécutée à partir d'un sous-répertoire de la structure de fichier du plug-in, vous obtiendrez également le sous-répertoire.require_once(plugin_dir_path(__DIR__).'/myfile.inc');
J'ai parcouru quelques plugins que j'avais précédemment créés pour voir les différentes manières dont j'ai inclus des fichiers supplémentaires à l'intérieur des plugins et j'ai remarqué qu'il y avait deux méthodes que vous pouvez utiliser, il y en a probablement d'autres.
Définir votre répertoire de plugin
À l’intérieur de votre plugin, définissez la localisation suivante du plugin.
Exemple de code:
Juste une ligne droite inclure ou exiger
Vous pouvez simplement utiliser; include, include_once, require ou require_once à l'intérieur de votre dossier plugin en référençant l'emplacement comme dans l'exemple de code ci-dessous. L'exemple ci-dessous sera basé sur un fichier de votre répertoire de plug-in racine comprenant un autre fichier situé dans un dossier du dossier de votre plug-in.
Exemple de code:
la source
Je finis par renoncer aux constructions WordPress pour includes et utiliser les éléments suivants:
Je ne pense pas que cela résoudra réellement votre problème, ce qui semble être un problème de portée, mais c'est le code que j'utilise.
En ce qui concerne la différence entre include et require:
include émettra un avertissement si le fichier n'est pas trouvé.
Require émettra une erreur fatale si le fichier n'est pas trouvé.
include_once et require_once n'incluront plus / exigent le fichier / code s'il a déjà été inclus / requis (notez que pour autant que je sache, il ne s'agit que d'un fichier spécifique dans un répertoire spécifique).
la source
Tout d'abord, merci à tous ceux qui ont répondu,
Mon problème était d'appeler les fichiers inclus avec l'URL complète de cette façon, ils ne passent pas par WordPress. et cela s’est passé parce que, comme je l’ai dit sur la question, je les appelais depuis le fichier de plugin principal. donc le correctif a fini par utiliser:
J'ai lu sur le support WordPress . et encore merci d'avoir répondu!
la source
Les informations ci-dessus proviennent de la documentation PHP. Le problème est qu'il n'y en a pas une correcte, cela dépendra de la nécessité du code. include_once ou include parce que je peux gérer l'avertissement et dire à l'utilisateur / visiteur qui se produit une erreur au lieu d'un message fatal_error
la source
Bonjour @ יית אתרים:
Lorsque WordPress est en cours de chargement, il définit la
add_action()
fonction avant de tenter de charger des plug-ins. Le fait que vous obtenez une erreur indique que vous faites quelque chose d'étrange ou que quelque chose ne va pas avec votre installation WordPress.Qui chargez- vous votre "plugin" ? Utilisez-vous un
include*()
ourequire*()
pour le charger, peut-être dans votrewp-config.php
fichier?la source
ou
ou
Remarque: pour interroger les fichiers .css & .js
admin_enqueue_scripts
dans l’utilisation du pluginplugin_dir_url( __FILE__ )
la source
Chaque fois que vous créez un nouveau fichier dans votre répertoire de travail, vous devez l’inclure à chaque fois. Mais essayez une méthode pour analyser votre répertoire et l’attacher automatiquement, pas seulement les fichiers php, ce qui permet d’inclure correctement les fiules php, js et css des deux côtés (backend, front end).
http://kvcodes.com/2014/05/wordpress-theme-development-include-files-automatically/
la source