En un mot, ma question est "Comment convertir le chemin absolu du script d’exécution, par exemple,
/home/content/xx/xxxxxxxx/html/wp-content/plugins/MY_PLUGIN_DIR/MY_PLUGIN/MY_PLUGIN.PHP
ou
/home/content/xx/xxxxxxxx/html/wp-content/themes/MY_THEME/functions.php
à l'URL absolue? "
http://example.com/wp-content/plugins/MY_PLUGIN_DIR/MY_PLUGIN.PHP
ou
http://example.com/wp-content/themes/MY_THEME/functions.php
Je n'ai même pas besoin du nom de script, mais seulement du chemin d'accès au répertoire dans lequel il se trouve.
J'ai créé une classe qui simplifie grandement la création d'une page d'options pour un plugin. Il ne fait pas (encore) la lourde tâche de s'inscrire/ajouter des options via l'API Settings, c'est plus une classe d'assistance qui
Il fait ces choses avec un nombre minimal d'options passées dans l'instanciation de la classe.
J'ai créé cette classe avec uniquement des plugins à l'esprit, mais je me suis rendu compte que cela fonctionnait aussi pour les thèmes ... sauf en ce qui concerne la génération d'URL à partir de références relatives. En ce moment, j'utilise
$my_url = plugins_url('/', __FILE__)
pour générer des URL pour les feuilles de style, les fichiers de script (.js) et le fichier d'icônes de menu associés à la page d'option uniquement si l'utilisateur entre un nom relatif URL S'ils entrent dans une URL absolue, je n'y touche pas. Exemple: si vous incluez 'icon_url' => 'images/my-icon.png'
en tant qu’option, la classe le convertira en
http://example.com/wp-content/plugins/MY_PLUGIN_DIR/MY_PLUGIN/images/my-icon.png
Mais depuis que j'ai décidé de faire fonctionner ce cours aussi pour les thèmes, j'ai réalisé que je ne pouvais pas utiliser plugins_url
. J'essaie d'éviter (si possible) d'empêcher l'utilisateur de spécifier si cette classe sera utilisée pour un plugin ou un thème.
Existe-t-il un moyen WordPress similaire à plugins_url()
que je pourrais utiliser?
Appelez get_stylesheet_directory_uri () pour le thème actuel, ou get_template_directory_uri () pour le thème parent d'un thème enfant et ajoutez-y vos chemins de fichiers.
$url = get_stylesheet_directory_uri() . '/images/my-icon.png';
$url = get_template_directory_uri() . '/images/my-icon.png';
Edit: pour déterminer si vous êtes dans un plugin, un thème parent ou un thème enfant, comparez le dossier dans lequel vous vous trouvez (via dirname(__FILE__)
) à plugin_dir_path () , get_template_directory () et get_stylesheet_directory () respectivement.
Dans votre fichier wp-config.php
, à la toute fin, définissez ABSPATH
comme étant le dossier racine wp. Vous pouvez alors remplacer cela depuis votre chemin de fichier par site_url
(ou, si vous avez plutôt coché le chemin pour le répertoire theme/plugin/upload, puis la fonction URL appropriée listée sous https: // codex.wordpress.org/Function_Reference/plugin_dir_url#Related )