Page d'accueil » WordPress » Réécriture d'URL dans WordPress Tips and Plugins

    Réécriture d'URL dans WordPress Tips and Plugins

    Les dernières mises à jour de WordPress ont permis aux développeurs de personnaliser leur site Web personnel très rapidement. Il est simple de mettre à jour des zones de votre thème, de remplacer les widgets dans la barre latérale et même d'écrire vos propres fonctions de code PHP personnalisées. L'étendue est énorme - et l'un des domaines de la popularité est la réécriture de jolies permaliens URL.

    Vous pouvez utiliser plusieurs méthodes pour mettre à jour le système de réécriture WordPress par défaut. Dans ce tutoriel, je partagerai quelques exemples et montrerai à quel point le processus peut être simple. Vous aurez besoin d'une compréhension de PHP pour suivre ce qui se passe dans le code, mais il est si facile de copier et coller dans votre propre modèle, il n'y a pratiquement pas de travail à faire..

    Comprendre WP_Rewrite

    Si vous connaissez bien mod_rewrite sur les serveurs Apache, vous utiliserez la syntaxe de réécriture de WordPress. Leur système est toujours construit sur un .htaccess fichier, mais toutes les règles sont codées en PHP. Cela facilite en fait le processus car nous avons plus de contrôle sur l'écriture de nos propres URL.

    Je recommande de parcourir la page de classe $ wp_rewrite car elle contient des tonnes d’informations sur le sujet. Il existe même de petits exemples que nous pouvons citer pour que tout soit plus facile à comprendre. La plupart du code peut être écrit directement dans votre thème functions.php fichier. Commençons par examiner les réécritures par défaut déjà incluses dans WordPress..

    Contenu de $ wp_rewrite-> rules

    En déclarant le $ wp_rewrite classe globale, nous avons accès à toutes les données internes. Quand vous allez ajouter vos propres règles, elles sont ajoutées dans un tableau avec le nom $ wp_rewrite-> règles. Il est important de garder en mémoire cette variable, car vous devrez probablement référencer les données plusieurs fois au cours du développement..

    règles); ?>

    J'ai ajouté ce bloc de code dans le thème de mon thème page.php fichier. Il produira un grand nombre de données qui ressemblent à un grand gâchis. Mais si tu Voir la source sur votre page, il est en fait facile de voir quelles règles de réécriture correspondent à quel nom de fichier. Par exemple, regardons les règles pour les réécritures de catégories:

    [category /(.+?)/?$] => index.php? category_name = $ correspond [1] 

    Le bit à gauche entre parenthèses est notre Apache RewriteRule à rechercher. À partir de la section /Catégorie/ suivi d'une chaîne de caractères. Si cela correspond, le serveur sait faire référence à index.php? nom_catégorie = en remplaçant la variable à la fin.

    Définition de liens permanents personnalisés

    Il y a tellement de contenu à parcourir dans la classe $ wp_rewrite uniquement. De nombreuses autres propriétés peuvent être référencées, telles que $ wp_rewrite-> category_base ou $ wp_rewrite-> author_base pour extraire les structures d'URL par défaut pour ces pages. Mais en plus des paramètres par défaut de WP, nous pouvons également créer nos propres règles..

    Reconstruction de la base d'auteur

    Lorsque vous accédez à la page des paramètres de permaliens, vous avez la possibilité de réinitialiser les bases de catégories et de balises. Cependant, l'option permettant de réinitialiser votre base d'auteur manque étrangement.

    Mais on peut utiliser la add_rewrite_rule () depuis le codex de WordPress pour intégrer de nouveaux paramètres. Dans ce cas j'ai remplacé /auteur/ avec /écrivain/ mais vous pouvez utiliser la base de votre choix. De plus, j'ai copié certaines des autres redirections pour les pages d'auteurs et les flux RSS. Vous pouvez ajouter ce bloc de code dans le fichier functions.php de votre thème..

    add_action ('init', 'add_author_rules'); function add_author_rules () add_rewrite_rule ("writer / ([^ /] +) /?", "index.php? nom_auteur = $ correspond à [1]", "top"); add_rewrite_rule ("writer / ([^ /] +) / page /? ([0-9] 1,) /?", "index.php? nom_auteur = $ correspond [1] & paginé = $ correspond [2] ", "Haut"); add_rewrite_rule ("writer / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?", "index.php? nom_auteur = $ correspond à [1] & feed = $ correspond à [2]", " Haut"); add_rewrite_rule ("writer / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?", "index.php? nom_auteur = $ correspond [1] & feed = $ correspond [2]" , "Haut");  

    Cette fonction est accessible même sans utiliser la variable $ wp_rewrite. Certains développeurs aiment cette méthode, car elle est plus simple que le codage en dur avec des propriétés de classe. Cependant, j'ai également remarqué que cette méthode n'était pas toujours fiable pour certaines installations WordPress. Il y a en fait une deuxième option pour ajouter ces règles au crochet après avoir vidé votre .htaccess (voir ci-dessous).

    Auteur Base utilisant generate_rewrite_rules

    En écrivant pour cette méthode, nous aurons à nouveau besoin de la classe globale $ wp_rewrite. J'ai ensuite configuré une nouvelle variable nommée $ new_rules qui contient un tableau associatif de données. Mon exemple de code ci-dessous réécrit simplement la section de page de l'auteur.

    function generate_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("writer / ([^ /] +) /?" => "index.php? nom_auteur =". $ wp_rewrite-> preg_index (1)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> rules;  

    Mais si nous voulons inclure plusieurs pages et flux RSS, nous pouvons étoffer le tableau. Vous avez la possibilité de créer une fonction PHP pour envoyer des données de tableaux associatifs, ce qui peut être un peu trop complexe. Nous pourrions également scinder les blocs de données via des virgules, en se comportant comme des entités distinctes dans le tableau. Découvrez mon code mis à jour à nouveau écrit dans le fichier de thème functions.php.

    function generate_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("writer / ([^ /] +) /?" => "index.php? nom_auteur =". $ wp_rewrite-> preg_index (1), "writer / ([^ /] +) / page /? ([0-9] 1,) /? "=>" Index.php? Nom_auteur = ". $ Wp_rewrite-> preg_index (1)." & Paged = ". $ Wp_rewrite-> preg_index (2), "writer / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?" => "index.php? nom_auteur =". $ wp_rewrite-> preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2), "writer / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?" => "index.php? nom_auteur =". $ wp_rewrite- > preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> rules;  

    N'oubliez pas que ni l'une ni l'autre de ces méthodes ne fonctionnera qu'après avoir vidé les règles de réécriture d'origine. Vous devrez le faire chaque fois que vous apporterez des modifications à ces fonctions, mais vos nouvelles règles resteront ensuite indéfiniment..

    Rinçage des règles de réécriture

    Chaque fois que vous effectuez une mise à jour du code de réécriture d'URL, les modifications ne sont pas appliquées immédiatement. Vous devez vider les règles de réécriture .htaccess pour que votre nouveau code soit ajouté. Cependant, effectuer cela sur chaque page init est une perte de temps considérable car elle écrit dans la base de données et actualise le fichier .htaccess..

    Une meilleure méthode consiste à accéder à votre page de permaliens dans le panneau d'administration et à enregistrer les modifications. Cela appelle toujours un flush_rewrite_rules afin que vous n'ayez jamais à vous soucier des utilisateurs de l'interface qui ont des problèmes de chargement. Et cela ne prend qu'une fois de réenregistrer la page et de mettre à jour toutes les règles de votre système. Mais si cela ne fonctionne pas, vous pouvez essayer d'appeler $ wp_rewrite-> flush_rules ();

    Utilisation de règles non-WP

    À l'intérieur de $ wp_rewrite classe nous avons accès à des dizaines de propriétés. Une des options les plus importantes est $ wp_rewrite-> non_wp_rules qui rassemble un tableau de redirections qui ne frappe pas le fichier index.php.

    Ceci est en fait utilisé le plus souvent dans le développement de plugins WordPress. Vous pouvez envoyer un type d’URL personnalisé spécifique (tel que / calendar / juin-2012 /) dans le backend de votre site web (/wp-content/plugins/calendarplug/myscript.php). Mais bien sûr, il existe d’autres utilisations pour ce tableau associatif de règles de réécriture personnalisées autres que les plugins. J'ai fourni un excellent exemple dans le contexte ci-dessous.

    Masquer vos fichiers de thème

    C’est une suggestion courante que je vois fréquemment sur les forums de discussion WordPress. Idéalement, nous aimerions référencer certains fichiers à l’intérieur du / wp-content / themes / mytheme / dossier avec une URL plus élégante. Notez que cela nécessitera un ensemble différent de réécritures WordPress pour changer la structure de répertoires..

    Le système de réécriture interne de WordPress pousse toujours le contenu vers un seul fichier de routage. Dans le cas par défaut, nous utilisons index.php avec toute donnée de chaîne de requête supplémentaire. Mais pour cacher notre répertoire de modèle standard (/ wp-content / themes / mytheme / *) nous aurons besoin d'afficher de nombreux fichiers différents.

    add_action ('generate_rewrite_rules', 'themes_dir_add_rewrites'); fonction themes_dir_add_rewrites () $ theme_name = next (explode ('/ themes /', get_stylesheet_directory ())); global $ wp_rewrite; $ new_non_wp_rules = array ('css /(.*)' => 'wp-content / themes /'. $ theme_name. '/ css / $ 1', 'js /(.*)' => 'wp-content / themes / '. $ theme_name.' / js / $ 1 ',' images / wordpress-urls-rewrite /(.*) '=>' wp-content / themes / '. $ thème_name.' / images / wordpress-urls-rewrite / 1 $ '); $ wp_rewrite-> non_wp_rules + = $ new_non_wp_rules;  

    J'ai écrit une nouvelle fonction themes_dir_add_rewrites () pour extraire tout le contenu principal de ces URL plus longues et les rediriger dans le backend. Notez que nous utilisons cette autre propriété mystérieuse de la classe $ wp_rewrite nommée non_wp_rules. Selon la documentation, il s'agit de règles qui ne dirigent pas directement le fichier index.php de WP et qui seront gérées du côté serveur..

    Ce qui est génial avec ces règles non-WP, c'est que vous pouvez toujours gérer l'ancienne méthode d'URL assez facilement. Rien ne vous empêche de vous connecter à:

    /wp-content/themes/mytheme/images/wordpress-urls-rewrite/logo.jpg.

    Mais cela paraît beaucoup plus agréable si vous pouvez vous référer à:

    /images/wordpress-urls-rewrite/logo.jpg au lieu.

    Outils utiles et plugins

    Il y a juste quelques outils que vous pouvez utiliser si vous êtes coincé avec le codage de vos propres jolies URL. Le processus est très difficile à comprendre, alors ne vous découragez pas si vous luttez pendant quelques semaines. Je pense que le contenu deviendra plus facile à mesure que vous passerez plus de temps à vous entraîner.

    Mais pour commencer, jetez un œil à certains de ces outils et plugins de réécriture pratiques. Vous n'aurez probablement pas besoin de tous ces éléments, mais il est bon de trouver une base de développeurs aussi importante pour les réécritures WP..

    Monkeyman Rewrite Analyzer

    Lorsqu’on aborde pour la première fois les règles de réécriture, ce plug-in est un must. Cela ne change en réalité aucune des règles de votre site Web - il vous permet simplement de tester le code et de voir quelles redirections vont vers quelles pages. Cela fonctionnera même pour tester les variables de requête personnalisées pour tous les types de publication personnalisés..

    AskApache RewriteRules Viewer

    Ceci est similaire au plugin ci-dessus sauf qu'il ne vous permet pas de tester vos propres règles. Au lieu de cela, ce plugin affichera toutes les règles WP par défaut de votre site Web et leur redirection. Cela inclura toutes les propriétés majeures de $ wp_rewrite tels que vos paramètres de permalien et bases de page / catégorie / balises.

    WP htaccess Control

    Ici, vous avez un ensemble de règles différent pour faire de nouvelles redirections de page. Le plugin a son propre panneau d’administration où vous pouvez éditer des variables telles que votre base d’auteurs, vos bases de pages et même ajouter vos propres règles .htaccess personnalisées..

    Cette méthode est différente comparée à la construction de votre propre avec wp_rewrite. Cependant, cela peut être plus facile pour les techniciens qui connaissent vraiment les serveurs Web et se sentent plus à l'aise pour écrire directement dans .htaccess.

    Réécrire le testeur de règles

    Ce n'est en fait pas un plugin WordPress, mais un outil pratique à conserver. Vous pouvez copier sur des règles de réécriture et les tester pour votre site Web sans jamais modifier votre fichier .htaccess. C'est la méthode idéale pour supprimer les bogues de votre syntaxe avant de lancer Live sur le Web..

    DW Rewrite

    DW Rewrite est un plugin très simple qui crée 3 jolies URL uniques immédiatement après l’installation. Par défaut, les liens admin, login et registration seront modifiés en / admin, /s'identifier, et /registre respectivement.

    Cela peut être très utile si vous avez besoin d’une solution rapide pour un blog comportant plusieurs auteurs. Il masquera spécifiquement le lien d’enregistrement WordPress embarrassant et compliqué (/wp-login.php?action=register).

    Conclusion

    J'espère que ce tutoriel peut fournir quelques exemples pour vous aider à réfléchir aux réécritures de WordPress. Le CMS est très populaire et les développeurs produisent toujours de nouvelles fonctionnalités chaque jour. La personnalisation de vos propres URL est une telle quantité de fonctionnalités utilisateur. Il confère à votre site Web une présence et une image de marque uniques par rapport aux options par défaut..

    Si vous rencontrez des problèmes avec les règles de réécriture, il ne devrait jamais être difficile de réparer les dommages. En supprimant simplement le code de fonction et en effaçant vos règles .htaccess, il semblerait que rien n’a changé. Assurez-vous de consulter d'autres articles similaires que vous pouvez trouver sur le sujet. Et si vous avez des questions ou des commentaires, vous pouvez les partager avec nous dans le post-débat.