Pourquoi ne pas coder les URL dans les thèmes ou les plugins WordPress

Lorsque vous développez un thème ou un plugin, vous constaterez souvent que vous devez inclure une URL dans votre code. Par exemple, dans un plugin, vous aurez peut-être besoin d'un lien vers une feuille de style fournie avec le plugin, tandis que dans un thème, vous voudrez probablement coder l'URL du site dans votre en-tête..

Il peut être tentant de simplement coder l'URL de la même manière que dans un site statique, mais c'est une mauvaise idée. Dans ce tutoriel, je vais expliquer pourquoi vous ne devriez pas faire cela et vous montrer les fonctions que vous pouvez utiliser pour créer des URL de manière dynamique..

Pourquoi vous ne devriez pas coder les URL dans vos thèmes et plugins

Commençons par les thèmes. Si vous développez un thème pour l'utiliser sur un site spécifique, il ne semble pas trop dommageable d'ajouter le domaine de ce site dans les fichiers de thèmes, mais il existe certains risques et inconvénients:

  • Si vous décidez de changer le nom de domaine du site, vous devrez éditer toutes les URL que vous avez codées en dur..
  • Si vous travaillez sur un site de développement que vous allez transférer sur un serveur live au lancement, vous devrez changer toutes les URL que vous avez codées en dur..
  • Si vous décidez d'utiliser le thème sur un autre site, vous devrez modifier toutes ces URL..
  • Si vous décidez de divulguer le thème au public ou de laisser les autres développeurs l’utiliser, le résultat sera cassé..
  • Si vous utilisez le thème comme base pour un autre thème que vous développez pour un autre site, vous devrez modifier toutes les URL..
  • Si votre site se trouve dans un sous-répertoire du répertoire racine de votre domaine mais que vous avez dit à WordPress d'utiliser le répertoire racine de l'URL, vos URL codées en dur peuvent pointer vers le mauvais emplacement..
  • Si vous oubliez de faire l'une de ces choses, votre site générera 404 erreurs et les liens vers des ressources telles que des images et des feuilles de style ne fonctionneront pas..

Alors ne le fais pas!

Mais qu'en est-il des plugins? Eh bien, c'est encore plus risqué. Il n'est pas rare de développer un thème pour un seul site, mais la plupart des plugins seront utilisés sur plusieurs sites. Il est peu probable que vous codiez en dur une URL complète dans un plugin, mais vous pourriez être tenté d'utiliser une fonction pour récupérer l'URL du site, puis coder le chemin d'accès au répertoire du plugin. Encore une fois, c'est risqué:

  • Si votre plugin est déplacé vers un répertoire différent (tel que le répertoire must use), tous les liens seront rompus..
  • Si votre plugin est installé sur un réseau multisite exécutant une version plus ancienne de WordPress, vos liens pourraient se rompre..
  • Si votre plugin est installé sur un site utilisant une structure de répertoires différente de celle que vous avez utilisée pour vos URL, là encore vos liens seront rompus.

Cela pourrait empêcher votre plugin de fonctionner du tout..

Alors, que faites-vous pour éviter de coder en dur les URL dans WordPress?

Fonctions à utiliser à la place des URL codées en dur

Vous utilisez diverses fonctions pour éviter le codage en dur des URL dans WordPress. Je vais les diviser en cinq catégories:

  • fonctions pour récupérer la page d'accueil du site
  • fonctions permettant de récupérer d'autres liens frontaux (y compris des publications, des pages, des pièces jointes et des archives)
  • fonctions pour récupérer les URL pour les écrans d'administration
  • fonctions permettant de récupérer les URL des fichiers dans les répertoires de votre plugin et de votre thème
  • fonctions pour récupérer des feuilles de style et des scripts

Commençons par les fonctions permettant de récupérer et de générer un lien vers la page d'accueil..

Récupération de l'URL de la page d'accueil

Les balises de modèle suivantes vont extraire ou générer l'URL de la page d'accueil de votre site:

  • bloginfo ('url'): affiche l'URL de la maison comme spécifié dans vos paramètres de lecture dans l'admin.
  • get_bloginfo ('url'): récupère l'URL du site sans l'afficher.
  • home_url (): récupère l'URL de la page d'accueil sans l'afficher: use echo esc_url (home_url ('/')); pour afficher l'URL de la maison avec une barre oblique. Cela prend deux paramètres optionnels: $ path si vous souhaitez ajouter un chemin d'accès à une page spécifique ou ajouter une barre oblique de fin, et régime $ pour spécifier le schéma de l'URL, tel que http, https et relatif.
  • get_home_url () récupère l'URL de la page d'accueil et prend en charge le multisite: vous pouvez inclure l'ID de blog en tant que paramètre.
  • URL du site(): l'URL où WordPress est stocké, donc si votre installation WordPress est dans le sous-répertoire wordpress, cela récupérera l'URL http://mysite.com/wordpress
  • get_site_url (): Récupère l'URL du site sans le sortir. Peut également être utilisé avec des paramètres pour générer l'URL d'un site dans un réseau multisite, ajouter un chemin et utiliser un modèle spécifique.
  • network_home_url (): l'URL d'accueil du site principal dans un réseau multisite, utile si vous souhaitez inclure un lien vers le site principal dans le pied de page de chaque site du réseau, par exemple.
  • réseau_site_url (): l'URL du site principal dans un réseau multisite.

Comme vous pouvez le constater, vous pouvez utiliser différentes balises pour afficher l’URL. Ce que vous utiliserez dépendra de nombreux acteurs:

  • Voulez-vous simplement récupérer l'URL ou l'afficher?
  • Voulez-vous ajouter un chemin après l'URL de la maison? (Vous pouvez éviter cela dans certains cas en utilisant les fonctions de la section suivante.)
  • Voulez-vous spécifier le schéma?
  • Voulez-vous récupérer l'URL de la page d'accueil ou du site, si celles-ci sont différentes?
  • Voulez-vous récupérer l'URL d'un site dans un réseau multisite?

Vous devez en utiliser un dans les fichiers de modèle de thème pour insérer un lien vers la page d'accueil, par exemple si un logo dans l'en-tête de votre site renvoie à la page d'accueil. Dans certains cas, un plugin devra également extraire ou afficher l'URL de la page d'accueil..

Récupération d'autres URL frontales

En plus de l'URL de la page d'accueil, il peut arriver que vous souhaitiez coder des liens vers d'autres pages de votre site. Cela inclura les pages, les publications, les pièces jointes et les types de publication personnalisés. Voici les fonctions que vous devriez utiliser:

  • post_permalink () affiche un lien vers une publication, avec l'identifiant de la publication comme paramètre.
  • get_page_link () récupère (mais ne génère pas) le lien vers une page, avec l'ID de page en tant que paramètre.
  • get_permalink () récupère (sans sortir) le lien permanent pour un article ou une page, avec l'identifiant de l'article ou de la page comme paramètre.
  • get_category_link () récupère le lien vers une archive de catégorie, avec l'ID de catégorie comme paramètre.
  • get_tag_link () récupère le lien vers la page d'archive d'une balise, avec l'identifiant de balise comme paramètre.
  • get_post_type_archive_link () récupère le lien vers les archives d'un type d'article, avec le type d'article comme paramètre.
  • get_term_link () récupère le lien vers un terme de taxonomie, avec le paramètre et la taxonomie comme paramètres.
  • the_attachment_link () renvoie le lien vers une pièce jointe, avec l'ID de pièce jointe en tant que premier paramètre. Utilisez d'autres paramètres pour définir la taille de l'image et déterminer si le lien mènera au fichier lui-même ou à sa page de pièce jointe..
  • get_attachment_link () récupère le lien pour une pièce jointe, avec l'ID de pièce jointe en tant que paramètre.
  • wp_get_attachment_link () récupère également le lien vers une pièce jointe, mais vous permet également d'afficher l'image si la pièce jointe est une image, à une taille que vous spécifiez.
  • get_search_link () récupère le lien vers la page de recherche. Vous pouvez définir une requête en tant que paramètre ou la laisser vide, auquel cas elle utilisera la requête en cours..

Récupération des URL d'administrateur

Si vous créez un plugin ou un thème avec des écrans de paramètres dans l'administrateur WordPress, ou si vous personnalisez les écrans d'administration, vous souhaiterez peut-être ajouter des liens vers les écrans d'administration. Encore une fois, vous ne devriez pas coder en dur vos URL, mais utilisez l’une de ces balises:

  • admin_url () va chercher (mais ne sort pas) une URL dans l'admin. Vous devez inclure le chemin d'accès à l'URL en tant que paramètre et vous pouvez également inclure le schéma, si nécessaire. Ainsi, par exemple, pour afficher l'URL de l'écran afin de créer une nouvelle publication, vous devez utiliser echo admin_url ('post-new.php');.
  • get_admin_url () est similaire à admin_url () mais prend en charge les réseaux multisites: vous pouvez inclure l'ID de blog en tant que paramètre.
  • edit_post_link () affiche un lien vers la page d'édition d'un article. Il peut être utilisé dans la boucle ou en dehors de la boucle avec le post ID en tant que paramètre.
  • get_edit_post_link () récupère le lien vers l'écran d'édition d'un article, avec l'identifiant de l'article comme paramètre.

Récupération de fichiers dans vos dossiers de plug-ins et de thèmes

Tout comme lorsque vous codez des URL dans les écrans front-end ou admin, vous devez également coder correctement les URL et les chemins lorsque vous faites référence à des fichiers de vos dossiers de plug-ins ou de thèmes.. 

Premièrement, voici les fonctions que vous devez utiliser dans les fichiers de thème:

  • get_stylesheet_directory () récupère le chemin d'accès complet du serveur (pas l'URL) pour le répertoire du thème actuellement activé. Utilisez ceci pour appeler des fichiers d'inclusion plutôt que pour générer des liens.
  • get_stylesheet_directory_uri () récupère l'URL du thème actuellement activé, sans barre oblique. Utilisez-le dans les fichiers de modèle pour récupérer les ressources stockées dans votre dossier de thèmes. Par exemple, pour afficher une image stockée dans le dossier d'images de votre thème, utilisez .
  • get_bloginfo ('stylesheet_directory') récupère l'URL du thème actuellement activé: using get_stylesheet_directory_uri () est plus propre.
  • get_template_directory_uri () est similaire à get_stylesheet_directory_uri () mais si vous utilisez un thème enfant, il récupère l'URL du thème parent. De même, get_template_directory () fonctionne de la même manière que get_stylesheet_directory () mais pour le thème parent.

Il existe également des fonctions à utiliser dans les fichiers plug-in:

  • plugins_url () récupère l'URL absolue dans le répertoire des plugins (sans barre oblique). Il faut deux paramètres facultatifs: le chemin à ajouter après l'URL et le plug-in auquel vous voulez que l'URL soit relative..
  • plugin_dir_url () récupère l'URL du répertoire dans lequel se trouve un fichier (avec une barre oblique), avec ce fichier comme paramètre. Normalement, vous utiliseriez __FICHIER__ en tant que paramètre pour désigner le fichier actuel.

Voici un exemple de chacun des éléments ci-dessus. Tout d'abord, pour récupérer l'URL d'un fichier dans le répertoire includes du plugin actuel:

plugins_url ('includes / myfile.php', __FILE__);

Et pour récupérer la même URL en utilisant plugin_dir_url ():

plugin_dir_url (__FILE__). 'includes / myfile.php';

Notez qu'avec le deuxième exemple, vous devez répercuter le chemin après la fonction: je préfère le premier car il est plus ordonné. N'oubliez pas que le second retourne un slash final et que le premier ne le fait pas..

Récupération de feuilles de style et de scripts

Vous ne devriez jamais coder en dur des liens vers des feuilles de style et des scripts dans vos fichiers modèles ou plug-ins: utilisez plutôt une fonction et attachez-la au bon crochet. Cela évite les problèmes de déplacement de fichiers, garantit que vous utilisez les scripts corrects sans duplication et est également plus efficace..

Pour appeler une feuille de style, utilisez wp_register_style () et wp_enqueue_style () dans une fonction et l'accrocher à la wp_enqueue_scripts crochet. La fonction ci-dessous ferait cela dans un plugin:

Notez que j'ai utilisé __FICHIER__ ci-dessus, qui indique à WordPress que le chemin d'accès à la feuille de style est relatif au fichier actuel.

L'appel d'un script est similaire, mais utilise wp_register_script () et wp_enqueue_script () dans votre fonction, et les attache à la wp_enqueue_scripts crochet. L'exemple ci-dessous enregistre un nouveau script et l'appelle:

function register_my_scripts () wp_register_script ('mon_script', plugins_url ('/js/script.js', __FILE__)); wp_enqueue_script ('mon_script');  add_action ('wp_enqueue_scripts', 'register_my_scripts');

Si votre script utilise un script fourni avec WordPress, tel que jQuery, vous n'avez pas besoin de l'enregistrer. il suffit de la mettre en file d'attente comme suit:

function register_my_scripts () wp_enqueue_script ('mon_script', plugins_url ('/js/script.js', __FILE__), 'jquery',, 'true');  add_action ('wp_enqueue_scripts', 'register_my_scripts');

En savoir plus sur le wp_enqueue_scripts accrochez-vous à ce tutoriel pour inclure JavaScript et CSS dans vos thèmes et plugins.

Résumé

J'espère que je vous ai convaincu que le codage en dur des URL dans WordPress est une mauvaise idée: cela peut entraîner toutes sortes de problèmes à l'avenir et est moins efficace. Selon l'endroit où vous souhaitez créer un lien, WordPress fournit une fonction permettant de remplacer toute URL codée en dur, dans vos thèmes ou vos plugins. Vous pouvez utiliser des fonctions et des balises de modèles pour créer des liens vers des pages du front-end de votre site, y compris la page d'accueil, des écrans de l'administrateur WordPress et des fichiers de vos modèles ou de vos plugins..