Un permalien est le lien qui est utilisé pour accéder à un contenu spécifique de votre site.
Par exemple, la page d’accueil de Kinsta est https://kinsta.com/, notre blog est sur https://kinsta.com/blog/ et un article individuel utilise un lien comme https://kinsta.com/blog/wordpress-widgets/.
Les permaliens sont également utilisés pour les pages d’archives, les pages statiques et tout contenu de votre site qui nécessite sa propre URL.
Dans cet article, nous vous montrerons comment fonctionnent les permaliens, comment les optimiser pour votre site et comment les configurer via votre écran de configuration et en écrivant du code.
Que sont les permaliens WordPress ?
Les Permaliens WordPress sont définis comme suit sur le codex officiel de WordPress:
« Les URL permanentes de vos différents articles de blog, ainsi que les catégories et autres listes d’articles de blog.»
Chaque page de votre site (y compris les articles, les pages, les pages d’archives et d’autres pages comme la page 404) aura son propre permalien.
Ainsi, par exemple, votre page d’accueil sera votresite.com, tandis que votre blog sera sur votresite.com/blog.
Si vous avez une catégorie « vedette » dans votre blog, elle peut se trouver à l’une des nombreuses URL :
- votresite.com/categorie/vedette
- votresite.com/blog/vedette ou simplement
- votresite.com/vedette.
Les articles individuels ont également leur propre permalien. Dans les fichiers de modèle de votre thème, la balise de modèle the_permalink() sera utilisée pour récupérer l’URL d’un article et créer un lien cliquable.
WordPress l’utilise pour récupérer le permalien unique de chaque article et l’afficher dans un élément <a> afin qu’il puisse être utilisé comme lien dans les listes d’articles de votre blog.
L’avantage de cette balise de modèle est qu’il suffit d’utiliser ce seul morceau de code pour récupérer le lien vers n’importe quel article de votre site, et vous n’avez pas à coder en dur les liens dans votre thème.
La différence entre les permaliens, les slugs et les liens
Dans cet article, nous nous concentrerons en détail sur les permaliens, mais nous nous intéresserons également aux slugs. En quoi sont-ils différents ?
Le permalien est le lien complet vers un article. Ainsi, le lien que j’ai donné plus tôt vers un article de Kinsta sur les widgets est https://kinsta.com/blog/wordpress-widgets/.
Le slug est la dernière partie de ce permalien, et il est unique à cet article. Dans ce cas, il s’agit de wordpress-widgets.
Ce slug est automatiquement généré pour vous en fonction du titre d’un article. Et si vous souhaitez créer un slug manuellement pour un article, vous pouvez le faire. Je vous montrerai comment (et pourquoi) plus tard dans cet article.
Comment sont créés les permaliens WordPress
Dans un site web statique, une URL identifie une ressource par son nom et le chemin du répertoire, comme le montre l’exemple suivant :
https://example.com/path/to/resource/wordpress-permalinks.html
Pour avoir des URL bien structurées, nous avons juste besoin d’un système de fichiers bien structuré et de ressources correctement nommées.
Mais le web est dynamique, et nous sommes habitués à gérer des sites web à l’aide de CMS basés sur des bases de données, ce qui signifie que les URLs contiennent un certain nombre de paramètres dont les valeurs déterminent la requête à exécuter dans la base de données.
Prenons l’exemple suivant :
https://example.com/?key1=val1&key2=val2
Dans cette URL, vous remarquerez un séparateur (le point d’interrogation), et un ensemble de paires clé/valeur (séparées par une esperluette) qui constituent la chaîne de requête. L’URL ne répond pas aux exigences de convivialité et d’accessibilité et devrait être convertie en un permalien plus significatif et plus facile à référencer.
La façon dont ces URLs « laides » sont converties en permaliens optimisés dépend de votre serveur web. Si vous êtes un utilisateur d’Apache, vous devrez ajouter un ensemble de directives de réécriture dans le fichier .htaccess du dossier racine. Si vous êtes un utilisateur Nginx, vous devez ajouter une directive try_files dans le fichier de configuration principal.
Mais ne vous inquiétez pas ! La plupart du temps, vous n’aurez pas besoin de configurer le serveur web ligne par ligne car WordPress le fera pour vous.
En tant qu’administrateur, vous pouvez rapidement et facilement définir des règles de réécriture depuis le panneau d’administration. Les utilisateurs avancés et les développeurs peuvent obtenir encore plus grâce à l’API de réécriture WordPress, qui fournit des fonctions et des hooks qui amènent la personnalisation des permaliens à un niveau supérieur.
Un aperçu des requêtes WordPress
Dans le but spécifique de construire la requête, de l’exécuter et de stocker les résultats de la base de données WordPress, WordPress fournit la classe WP_Query. Grâce à cette classe, nous n’avons pas besoin de nous soucier de la requête car WP_Query traitera automatiquement la requête, la construira et l’exécutera. Ensuite, selon la hiérarchie des modèles, WordPress retournera la ressource demandée.
WordPress admet les requêtes pour des articles, des pages, des types de publications ainsi que pour un certain nombre d’archives classées par catégorie, par étiquette, par date, par auteur, etc.
De plus, si les fonctionnalités par défaut ne suffisent pas, les développeurs peuvent construire des requêtes personnalisées en créant de nouvelles instances de la classe WP_Query (l’objet de requête) ou en passant des paramètres spécifiques pour une instance existante de la requête avant son exécution.
Les paramètres de requête sont appelés variables de requête et sont divisées en trois groupes.
Variables de requêtes publiques
Ces variables sont publiques au sens où elles peuvent être utilisées dans les requêtes publiques (c’est-à-dire les URLs). Grâce à ces variables, nous pouvons demander des artioles par auteurs :
?author=12? author_name=mickey
Par catégorie ou par étiquette :
?cat=4,5,6 ?category_name=CMS ?tag=wordpress
Par date et heure :
?monthnum=201601 ?year=2015?w=13 ?day=31
Par article ou par page :
?p=123 ?name=hello-world ?page_id=234
Et bien plus encore.
Variables de requêtes privées
Ces variables ne sont pas destinées à être ajoutées aux chaînes de requête d’URL. Elles peuvent être utilisées pour affecter les requêtes juste à l’intérieur d’un script (une extension ou le fichier functions.php d’un thème).
La chaîne de requête suivante ne donnerait pas le résultat attendu :
?meta_key=city&meta_value=London
meta_key et meta_value sont des variables de requête privées qui ne doivent pas être définies dans les chaînes de requête. Elles doivent être transmises à une instance de l’objet de requête, comme je vous le montrerai plus tard.
Voir la liste complète des variables d’interrogation publiques et privées dans le Codex.
Variables de requêtes personnalisées
Ces variables définies par l’utilisateur peuvent être transmises via des chaînes de requête d’URL, tout comme les variables de requête publiques. La principale différence entre les variables publiques et les variables personnalisées est que WordPress ne gère pas les variables personnalisées par lui-même, et nous devons obtenir leurs valeurs à partir d’une extension pour personnaliser les requêtes.
Cela étant dit, revenons aux permaliens.
Vilains permaliens WordPress et liste des requêtes
Les permaliens les plus vilains affichent la chaîne de requête, c’est-à-dire la partie de l’URL contenant un ensemble de variables de requête (la chaîne de requête) qui déterminera la ressource retournée.
À titre d’exemple, considérez les URL suivants :
https://example.com/?cat=5 https://example.com/?cat=5,7,9
En réponse à ces URL, WordPress renverrait les archives des articles appartenant aux catégories spécifiées.
Nous ne sommes pas limités à un seul paramètre par URL. Dans les exemples suivants, nous construisons des requêtes plus complexes :
?author_name=lucy&category_name=WebDev?tag=wordpress&m=201606
Dans la première chaîne de requête, author_name et category_name nécessiteront tous les articles de l’auteur spécifié dans la catégorie WebDev. Dans la deuxième chaîne de recherche, tag et m nécessiteront tous les articles étiquettés « wordpress » et publiés en juin 2016.
Comme vous pouvez le voir, nous pouvons définir plus d’une variable de requête et forcer WordPress à exécuter des requêtes avancées en ajoutant simplement les paires key=value appropriées aux chaînes de requête.
Jolis permaliens : Une meilleure alternative
En activant les jolis permaliens, nous avons mis en place une structure d’URL utilisable, accessible et facile à référencer. Comparons les URL suivantes :
https://example.com/?p=123 https://example.com/wordpress-permalinks/
Dans cet exemple, le vilain permalien affiche la variable p et sa valeur (l’ID de l’article), tandis que la jolie URL montre le slug de l’article.
WordPress propose quatre jolis formats de permaliens que nous pouvons choisir dans l’écran des réglages des permaliens, comme le montre l’image ci-dessous.
Mais vous n’êtes pas limité aux formats par défaut, car WordPress vous permet de personnaliser le joli format de permalien en définissant une ou plusieurs balises de structure.
Je vous les montrerai en détail plus tard dans cet article.
Pourquoi les jolis permaliens sont-ils importants ?
L’utilisation de jolis permaliens pour votre site WordPress aura deux avantages : SEO et expérience utilisateur (UX).
Pourquoi ? Les moteurs de recherche utilisent votre URL comme indication du sujet de l’article. Si le contenu du permalien se rapporte au contenu de votre article, cela aidera les moteurs de recherche à déterminer le sujet de votre article et à déterminer s’il s’agit bien de ce qu’il prétend être.
Pour l’UX, de jolis permaliens sont préférables car ils permettent aux utilisateurs de se souvenir et d’utiliser plus facilement les URL de votre site. Personne ne se souviendra de l’URL de votre page de contact si elle est votresite.com/?p=456. Mais ils vont se souvenir de votresite.com/contact.
Lien permanent, slugs et SEO
Le slug d’un l’article est la toute dernière partie de l’URL. Si vous avez configuré les réglages des permaliens WordPress de manière à ce que le nom de l’article soit utilisé, le slug d’un article nommé « comment créer de jolis permaliens » sera automatiquement généré sous la forme votresite.com/comment-creer-jolis-premaliens/.
C’est un bon slug. Il indique aux utilisateurs le sujet de l’article et, pour les moteurs de recherche, il contient « jolis permaliens », qui peuvent être le mot-clé que vous visez.
Maiscela peut être amélioré.
Vos slugs doivent être suffisamment longs pour inclure les mots clés que vous ciblez, mais suffisamment courts pour être mémorisables pour les utilisateurs et ne pas embrouiller les moteurs de recherche avec un grand nombre de mots inutiles (voici comment créer des permaliens faciles à référencer dans WordPress).
Ainsi, un article intitulé « comment créer de jolis permaliens » serait peut-être mieux avec un slug jolis permaliens, vous donnant votresite.com/jolis-permaliens/. Ou si vous avez plusieurs articles sur les jolis permaliens et que vous voulez donner à celui-ci une référence spécifique au fait qu’il s’agit d’un guide pratique, vous pouvez utiliser creer-jolis-permaliens, qui vous donnera votresite.com/creer-jolis-permaliens.
Pour aller plus loin, vous pourriez améliorer le référencement en incluant « WordPress » : exemple.com/creer-jolis-permaliens-wordpress.
Lorsque les gens regardent votre lien dans un résultat de recherche, vous ne voulez pas non plus que le résultat de la recherche soit si long qu’il ne puisse pas être lu dans son intégralité. Voici deux résultats que j’obtiens sur le blog Kinsta lorsque je recherche des « permaliens wordpress » sur Google.
Les deux ont des slugs bien optimisés. Le premier est wordpress-premalinks-url-rewriting, indiquant qu’il cible ces mots-clés, et le second est wordpress-slug, qui est encore plus ciblé.
Ces slugs ne gaspillent pas de mots. Ils indiquent aux moteurs de recherche de quoi il s’agit et rien d’autre.
Vous pouvez optimiser vos slugs pour le référencement en sélectionnant d’abord le nom de l’article dans l’écran des réglages des permaliens, puis en modifiant manuellement le slug de chaque article au moment où vous l’écrivez.
Permaliens, slugs et UX
L’utilisation de jolis permaliens et de slugs courts et mémorisables vous donnera également des avantages en matière d’UX.
Selon un article de Jacob Nielsen de 1999, un site web utilisable nécessite :
- un nom de domaine facile à mémoriser et à épeler.
- des URLs courtes.
- des URLs faciles à saisir.
- Des URLs qui visualisent la structure du site.
- Des URLs qui sont « hackables » pour permettre aux utilisateurs de passer à des niveaux supérieurs de l’architecture de l’information en modifiant la fin de l’URL.
- Des URLs persistantes qui ne changent pas.
Une URL ne doit jamais changer, car elle peut être stockée et partagée de nombreuses façons. C’est la raison pour laquelle nous les appelons des permaliens. En outre, une URL doit être sémantique, c’est à dire qu’elle doit être immédiatement et intuitivement significative pour les utilisateurs non experts.
Il est donc possible de modifier le permalien d’un article après l’avoir publié, mais ce n’est pas une bonne idée. C’est parce que le permalien original peut déjà avoir été partagé. Si vous devez le modifier, assurez-vous de suivre les meilleures pratiques de redirection de WordPress.
Comment modifier les réglages des permaliens dans WordPress
Dans WordPress, vous pouvez modifier les permaliens de plusieurs façons :
- Vous pouvez modifier l’écran des réglages des permaliens pour activer de jolis permaliens, ce que vous devez faire dès que vous avez créé votre site web.
- Vous pouvez modifier la structure des permaliens pour les étiquettes et les catégories dans l’écran des permaliens.
- Vous pouvez modifier les slugs de chaque article lorsque vous les créez et les modifiez.
- Vous pouvez spécifier la structure des liens pour les types de publication personnalisés lors de leur enregistrement, en choisissant d’utiliser la structure par défaut ou de l’annuler.
- Vous pouvez écrire une extension pour modifier la façon dont les permaliens sont structurés.
- Vous pouvez utiliser des redirections pour qu’un permalien périmé pointe vers un nouveau.
Examinons chacun d’entre elles.
Modification des réglages globaux des liens permanents
L’écran des réglages des permaliens est le premier endroit où vous devez aller pour configurer vos permaliens. Accédez à cet écran via Réglages > Permaliens.
Réglages communs
La première section traite des réglages des articles individuels. Les options sont les suivantes :
- En clair : il s’agit d’utiliser l’ID de l’article pour le lien. Cela aura un sens pour les navigateurs mais ne signifiera pas grand-chose pour les êtres humains ou les moteurs de recherche. Il ressemble à ceci : exemple.com/?p=123.
- Jour et nom : Il s’agit de la date complète de publication de l’article ainsi que de son nom (ou plus précisément de son slug). Il ressemble à ceci : exemple.com/2020/06/01/mon-article/.
- Mois et nom : Il s’agit d’une version plus courte du jour et du nom, avec uniquement le mois et l’année et non le jour : exemple.com/2020/06/mon-article/.
- Numérique : Comme l’option simple, cela utilise l’ID de l’article et n’est pas très convivial. exemple.com/archives/123.
- Nom de la publication : cette option n’inclut pas de date ni d’ID de publication, mais utilise simplement la balise : exemple.com/mon-article/.
- Structure personnalisée : Vous pouvez ici créer votre propre structure personnalisée. Utiliser des balises pour récupérer des informations basées sur les données de l’article, et du texte statique pour ajouter quelque chose qui ne changera pas entre les articles.
Ces balises sont des mots-clés spécifiques enveloppés dans le caractère %. WordPress fournit les balises suivantes :
- %year% – l’année de la publication de l’article (quatre chiffres).
- %monthnum% – le mois de la publication (deux chiffres).
- %day% – le jour de la publication (deux chiffres).
- %hour% – l’heure de la publication (deux chiffres).
- %minute% – les minutes de la publication (deux chiffres).
- %second% – les secondes de la publication (deux chiffres).
- %post_id% – l’ID unique de l’article (entier).
- %postname% – le slug du message (c’est-à-dire la chaîne représentant le titre de l’article).
- %catégory% – le slug de la catégorie.
- %author% – le slug de l’auteur.
Essayez de cocher le bouton d’option Structure personnalisée et d’ajouter l’une des chaînes suivantes dans le champ de texte :
- /%author%/%postname%/
- /%year%/%postname%/
- /%category%/%postname%/
Chacune de ces chaînes génère un joli permalien différent avec des valeurs sémantiques spécifiques, comme indiqué ci-dessous :
example.com/rachelmccollin/wordpress-permalinks/ example.com/2020/wordpress-permalinks/ example.com/CMS/wordpress-permalinks/
Dans le premier exemple, l’URL qui en résulte met en évidence l’auteur de l’article. Les deux autres formats nous indiquent respectivement l’année de publication et la catégorie de l’article. C’est à vous de choisir le format qui vous convient le mieux.
Une fois que vous avez sélectionné l’option souhaitée, passez à la section Facultatif ou cliquez sur Enregistrer les modifications pour sauvegarder vos réglages.
Réglages facultatifs des permaliens
En plus des réglages de vos articles individuels, l’écran des réglages des permaliens vous permet également de définir une structure personnalisée pour vos archives de catégories et d’étiquettes.
Si vous ne le faites pas, la valeur par défaut est d’inclure /category/category-slug/ à la fin du permalien. Ainsi, si vous avez une catégorie « vedette », sa page d’archives se trouve sur votresite.com/categorie/vedette.
Vous pouvez le modifier dans la section facultative de la page des réglages des permaliens. Ainsi, si vous souhaitez que votresite.com/blog/vedette/ soit le permalien de cette archive de catégorie, vous devez saisir blog dans le champ Préfixe des catégories. Vous n’avez pas besoin d’insérer de slash (/) ou d’utiliser des balises.
Comment modifier les permaliens et les slugs pour les articles et les pages individuels
Une fois que vous avez activé de jolis permaliens sur votre site WordPress, il est temps d’optimiser le slug pour chaque article et chaque page.
Il est préférable de le faire lorsque vous créez votre contenu. Si vous modifiez le slug d’un article, vous changerez l’URL qu’il utilise, et les liens que vous ou vos visiteurs ont partagés dans le passé ne fonctionneront plus.
Pour modifier le slug d’un article, vous travaillez dans l’écran d’édition de cet article. Allez à la page Articles et sélectionnez l’article que vous souhaitez modifier. (Si vous êtes en train de créer l’article, vous serez déjà sur l’écran de droite).
Dans l’écran de modification de l’article, sélectionnez le panneau Document sur le côté droit et allez à la section Permalien. Cliquez sur la flèche à droite de celle-ci si elle n’est pas déjà ouverte.
Le slug généré automatiquement sera affiché dans le champ Slug de l’URL. Vous pouvez le modifier pour qu’il soit plus court et plus précis.
Avant de le modifier, copiez l’ancien slug quelque part afin de pouvoir l’utiliser si vous avez besoin de mettre en place une redirection par la suite (ceci ne s’applique qu’aux articles déjà publiés).
Cliquez maintenant sur le bouton Publier ou Mettre à jour pour enregistrer vos modifications.
N’oubliez pas : si vous avez modifié le slug pour un article existant, vous pourriez créer un problème pour les personnes qui ont le lien original et devraient utiliser les redirections.
Comment modifier les réglages des permaliens pour les pages d’archives
Pour modifier les réglages des permaliens pour des pages d’archives individuelles, vous pouvez modifier les réglages des préfixes pour les « catégories » ou les « étiquettes » dans l’écran des réglages des permaliens. Vous pouvez également modifier le slug pour une catégorie, une étiquette ou une taxonomie personnalisée.
Voyons comment faire, puis passons à la modification du permalien pour les taxonomies personnalisées et les types de publication lorsque vous les enregistrez.
Changer les slugs pour les catégories et les étiquettes
Pour ce faire, allez dans Articles > Catégories (ou Articles > Étiquettes).
Trouvez la catégorie ou l’étiquette dont vous souhaitez modifier le slug et cliquez sur son nom.
Vous pouvez ensuite saisir un slug pour la catégorie ou l’étiquette. WordPress en générera automatiquement un en fonction du nom de la catégorie ou de l’étiquette, mais vous n’êtes pas obligé de le conserver. Comme pour les articles, il est judicieux de le faire lorsque vous créez la catégorie ou l’étiquette. Si vous le faites plus tard, vous devrez mettre en place une redirection.
Si vous créez une taxonomie personnalisée, ou si une taxonomie est créée par une extension, vous pouvez modifier les slugs pour les termes individuels de cette taxonomie exactement de la même manière. Mais si vous voulez modifier le slug pour la taxonomie elle-même, vous devrez modifier un peu de code.
Changer les slugs pour les taxonomies personnalisées
Lorsque vous enregistrez une taxonomie personnalisée, les pages d’archives de cette taxonomie auront automatiquement une URL de forme votresite.com/taxonomie/terme, où taxonomie est l’ID de la taxonomie et terme est le slug du terme.
Imaginons que vous enregistriez une taxonomie personnalisée pour les langues avec l’ID kinsta_language, qui utilise un préfixe pour s’assurer qu’elle est distincte de toutes les autres taxonomies enregistrées par d’autres extensions. Vous pourriez alors créer un terme avec un slug français.
L’URL pour l’archive de ce terme de taxonomie serait votresite.com/kinsta_language/francais.
Mais que faire si vous voulez changer cela pour qu’il n’inclue pas ce préfixe et soit plus convivial ? Vous pouvez le faire en utilisant l’argument rewrite lorsque vous enregistrez la taxonomie.
Voici le code que vous utiliseriez pour enregistrer la taxonomie, y compris l’argument rewrite.
function kinsta_register_taxonomy() {
// languages
$labels = array(
'name'=> __( 'Languages' ),
'singular_name' => __( 'Language' ),
'search_items' => __( 'Search Languages' ),
'all_items' => __( 'All Languages' ),
'edit_item' => __( 'Edit Languages' ),
'update_item' => __( 'Update Languages' ),
'add_new_item' => __( 'Add New Language' ),
'new_item_name' => __( 'New Language Name' ),
'menu_name' => __( 'Languages' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'sort' => true,
'args' => array( 'orderby' => 'term_order' ),
'rewrite' => array( 'slug' => 'language' ),
'show_admin_column' => true,
'show_in_rest' => true
);
register_taxonomy( ‘kinsta_language', array( 'post', ‘attachment' ), $args);
}
add_action( 'init', 'kinsta_register_taxonomy' );
La ligne importante de ce code est celle-ci :
'rewrite' => array( 'slug' => 'language' ),
Cela réécrit le slug de kinsta_language (l’ID) en language (la nouvelle valeur). Votre nouvelle URL serait donc votresite.com/language/francais. Beaucoup plus facile à utiliser !
Comment modifier les slugs pour les types de publication personnalisés
Les types de publications personnalisés fonctionnent de la même manière que les taxonomies personnalisées lorsque vous les enregistrez, de sorte qu’ils ont une URL qui inclut l’ID du type de publication personnalisé.
Imaginons que vous enregistrez un type de publication personnalisé appelé kinsta_book et que vous créez une publication de ce type appelée « Huckleberry Finn », avec un slug Huckleberry-finn.
L’URL serait votresite.com/kinsta_book/huckleberry-finn. Et le slug pour l’archive de type de publication serait votresite.com/kinsta_book.
Là encore, vous pouvez changer cela lorsque vous enregistrez le type de publication personnalisé, en utilisant l’argument rewrite. Voici à nouveau le code incluant cet argument :
function kinsta_register_post_type() {
// books
$labels = array(
'name' => __( 'Books' ),
'singular_name' => __( 'Book' ),
'add_new' => __( 'New Book' ),
'add_new_item' => __( 'Add New Book' ),
'edit_item' => __( 'Edit Book' ),
'new_item' => __( 'New Book' ),
'view_item' => __( 'View Book' ),
'search_items' => __( 'Search Books' ),
'not_found' => __( 'No Books Found' ),
'not_found_in_trash' => __( 'No Books found in Trash' ),
);
$args = array(
'labels' => $labels,
'has_archive' => true,
'public' => true,
'hierarchical' => false,
'supports' => array(
'title',
'editor',
'excerpt',
'custom-fields',
'thumbnail',
'page-attributes'
),
'taxonomies' => array( ‘kinsta_language', 'category'),
'rewrite' => array( 'slug' => 'book' )
);
register_post_type( ‘kinsta_book', $args );
}
add_action( 'init', 'kinsta_register_post_type' );
La ligne importante pour le slug est celle-ci :
'rewrite' => array( 'slug' => 'book' )
Les URLs seront donc désormais votresite.com/book/huckleberry-finn pour un livre individuel et votresite.com/book pour les archives.
Modification des permaliens à l’aide de champs personnalisés
En plus des variations publiques et privées, WordPress permet aux développeurs et aux utilisateurs avancés de définir leurs propres variables de requête personnalisées. Une fois enregistrées, ces variables peuvent être ajoutées à des chaînes de requête, tout comme les variables de requête publiques, et leurs valeurs peuvent être utilisées pour affecter les requêtes également.
Voici comment construire une méta-requête personnalisée (c’est-à-dire une requête qui récupère les articles depuis un champ personnalisé) en tirant parti des différentes variables de la requête personnalisée.
Pour atteindre cet objectif, nous allons développer une extension à partir de laquelle nous allons enregistrer des variables personnalisées, obtenir leurs valeurs et modifier la requête en conséquence.
Voici comment…
Créez une extension dans votre répertoire wp-content/plugins. Ajoutez une fonction pour enregistrer les variables de requête :
/**
* Register custom query vars
*
* @param array $vars The array of available query variables
*/
function myplugin_register_query_vars( $vars ) {
$vars[] = 'city';
return $vars;
}
add_filter( 'query_vars', 'myplugin_register_query_vars' );
Le filtre query_vars vous permet d’ajouter, de supprimer ou de modifier les variables de requête publiques avant l’exécution de la requête. La fonction de rappel dans l’exemple stocke en argument un tableau des variables disponibles, ajoute une nouvelle variable et renvoie le même tableau.
Ensuite, ajoutez cette fonction qui utilise la valeur de la variable pour modifier la requête :
/**
* Build a custom query
*
* @param $query obj The WP_Query instance (passed by reference)
*
*/
function myplugin_pre_get_posts( $query ) {
// check if the user is requesting an admin page
// or current query is not the main query
if ( is_admin() || ! $query->is_main_query() ){
return;
}
$city = get_query_var( 'city' );
// add meta_query elements
if( !empty( $city ) ){
$query->set( 'meta_key', 'city' );
$query->set( 'meta_value', $city );
$query->set( 'meta_compare', 'LIKE' );
}
}
add_action( 'pre_get_posts', 'myplugin_pre_get_posts', 1 );
Le hook d’action pre_get_posts est déclenché après la création de la requête mais avant son exécution. Nous pouvons donc associer une fonction de rappel à cette action pour apporter nos modifications à la requête avant qu’elle ne soit exécutée. C’est ce qui se passe :
- La fonction de rappel conserve une instance de l’objet $query, qui est passée par référence et non par valeur. Cela signifie que toute modification de l’objet de la requête affecte la requête originale et non une copie de celle-ci. C’est pourquoi nous devons être sûrs de la requête qui va être exécutée (la requête principale).
- Plus tard, nous obtenons la valeur city à partir de la chaîne de requête actuelle grâce à la fonction get_query_var.
- Enfin, si $city n’est pas vide, nous pouvons définir les éléments de la requête meta meta_key, meta_value et meta_compare. Ces derniers sont des variables de requête privées qui ne sont pas disponibles pour les requêtes publiques. Leurs valeurs ne peuvent être définies qu’à l’intérieur du script.
Maintenant, activez l’extension, ajoutez le champ personnalisé city à un certain nombre d’articles. Allez dans Réglages > Permaliens pour actualiser les permaliens, vous n’avez rien à faire, il suffit de vous rendre sur cet écran.
Vérifiez maintenant les URL comme suit :
https://example.com/?city=London
En réponse à cette requête, WordPress renverrait tous les articles dont la valeur du champ ville est Londres.
Notre dernière tâche consiste à convertir l’URL laide de l’exemple ci-dessus en une jolie structure de permalien. Ajoutons la fonction suivante à notre extension :
/**
* Add rewrite tags and rules
*/
function myplugin_rewrite_tag_rule() {
add_rewrite_tag( '%city%', '([^&]+)' );
add_rewrite_rule( '^city/([^/]*)/?', 'index.php?city=$matches[1]','top' );
}
add_action('init', 'myplugin_rewrite_tag_rule', 10, 0);
Les fonctions add_rewrite_tag et add_rewrite_rule font partie de l’API Rewrite. add_rewrite_tag rend WordPress conscient de la variable de requête city, tandis que add_rewrite_rule spécifie une nouvelle règle de réécriture. Les deux fonctions doivent être liées à l’action init. Grâce à la nouvelle balise et à la nouvelle règle, nous pouvons utiliser l’URL suivante :
https://example.com/city/London/
WordPress retournera une archive des articles dont la valeur du champ personnalisé city est Londres.
Note : chaque fois qu’une nouvelle règle de réécriture est ajoutée, les permaliens WordPress doivent être actualisés depuis l’écran des réglages des permaliens.
Comment modifier les permaliens dans WooCommerce
WooCommerce crée ses propres types de publications et taxonomies, qui ont tous des permaliens par défaut définis par l’extension.
Vous pouvez modifier les réglages des permaliens et des slugs pour tous ces éléments.
Changer les permaliens de catégorie de produit, d’étiquette et d’attribut
La modification des permaliens pour les catégories de produits, les étiquettes et les attributs comporte deux aspects : la structure et le slug. Cela fonctionne de la même manière que les catégories et les balises étiquettes.
Pour modifier la structure des permaliens, allez dans Réglages > Permaliens et trouvez la section Facultatif, où WooCommerce aura ajouté quelques champs supplémentaires.
Vous pouvez ici modifier les réglages des permaliens pour les trois taxonomies personnalisées ajoutées par WooCommerce :
- Catégories de produits : la valeur par défaut est /product-category/ mais vous pouvez la modifier si vous utilisez une terminologie différente dans votre boutique. Assurez-vous que votre modification n’entre pas en conflit avec vos réglages pour les catégories normales, qui ne sont pas les mêmes.
- Étiquettes de produits : la valeur par défaut est /product-tag/, et vous pouvez la modifier si vous le souhaitez. Veillez à éviter tout conflit avec les étiquettes d’articles habituelles.
- Les attributs des produits : ils fonctionnent différemment des deux autres taxonomies et ont une structure différente. Tout ce que vous ajoutez ici sera toujours suivi du slug pour le nom de l’attribut individuel (par exemple la taille) et l’attribut lui-même (le terme, par exemple grand).
Si vous souhaitez modifier le slug d’une catégorie ou d’une étiquette individuelle, allez dans Produits > Catégories (ou Produits > Étiquettes) et modifiez-les de la même manière que les étiquettes et les catégories d’articles.
La modification des attributs est différente car non seulement vous avez l’attribut lui-même, mais aussi les termes de l’attribut.
Commencez par aller dans Produits > Attributs.
Lorsque vous créez un nouvel attribut, vous utilisez le champ Slug pour définir le slug de la même manière que pour une étiquette ou une catégorie. Pour modifier le slug d’un attribut existant, vous pouvez également cliquer sur le lien Modifier situé sous cet attribut dans la liste de droite.
Cliquez sur Mettre à jour pour enregistrer vos modifications.
Pour modifier les slugs de termes de l’attribut, allez dans l’écran des attributs et cliquez sur le lien Configurer les termes à côté de l’attribut. Vous accédez alors à la liste des termes de cet attribut.
Maintenant, modifiez le slug pour ce terme comme vous le feriez pour une catégorie ou une étiquette. Il sera ensuite ajouté à l’URL de l’archive pour les produits qui possèdent ce terme.
Modifier les liens permanents d’un produit
Vous modifiez les permaliens des produits via Réglages > Permaliens. Faites défiler vers le bas jusqu’à la section Permaliens de produit.
Ici, vous pouvez choisir parmi quatre réglages de permliens pour vos produits :
- Par défaut : si vous avez déjà activé de jolis permaliens, cela utilisera le slug de chaque produit avec le préfixe /produit/.
- Base de la boutique : Au lieu d’utiliser /produit/, votre boutique utilisera /shop/.
- Base de la boutique avec catégorie : Insère la catégorie du produit actuel dans l’URL. Vous pouvez ainsi ajouter des mots clés que vous souhaitez cibler si vos catégories de produits reflètent ces derniers, mais cela n’aidera pas votre UX car cela crée de longues URLs.
- Base personnalisée : Créez votre propre structure URL en utilisant les mots qui s’appliquent à votre boutique. Vous ne pouvez pas supprimer entièrement le préfixe, vous devez utiliser quelque chose.
Une fois que vous avez choisi l’option souhaitée, cliquez sur le bouton Enregistrer les modifications pour sauvegarder votre choix.
Vous pouvez également modifier le slug d’un produit individuel dans l’écran de modification du produit, exactement comme vous le feriez pour un article ou une page.
Comment modifier les permaliens WordPress avec une extension
Vous pouvez utiliser une extension tierces pour apporter des modifications à vos réglages de permaliens en plus de ce que vous permet l’écran des réglages par défaut des permaliens WordPress.
- L’extension Custom Permalinks vous permet de définir l’URL de n’importe quelle catégorie ou étiquettes d’articles selon vos souhaits. Il permet également de mettre en place des redirections pour que les anciennes URLs fonctionnent toujours.
- L’extension Permalink Manager Lite supporte les types de publication personnalisés ainsi que les taxonomies personnalisées dans la version pro. Elle inclut également des redirections et fonctionne avec des extensions tierces telles que WooCommerce et Yoast.
Comment changer les permaliens WordPress dans phpMyAdmin
Si vous savez ce que vous faites et que vous êtes sûr de ne rien casser, vous pouvez également modifier des permaliens dans phpMyAdmin.
C’est une chose que vous devrez peut-être faire si vous ne pouvez pas accéder à l’écran des réglages des permaliens pour une raison quelconque.
Commencez par sauvegarder votre base de données. Vous allez la modifier directement, il est donc important de la sauvegarder au cas où vous feriez une erreur.
Accédez à phpMyAdmin.
Si vous êtes un client de Kinsta, vous pouvez le faire en vous connectant à MyKinsta et en sélectionnant le site avec lequel vous souhaitez travailler.
Faites défiler l’écran Info vers le bas et cliquez sur le bouton Ouvrir phpMyAdmin.
Saisissez votre identifiant et votre mot de passe pour accéder à phpMyAdmin. Vous pouvez les récupérer à partir de l’écran Info.
Cliquez sur l’onglet Bases de données en haut et sélectionnez la base de données avec laquelle vous voulez travailler.
Sélectionnez la table wp_options et trouvez l’entrée permalink_structure dans la colonne option_name. Vous devrez peut-être vous rendre au-delà de la première page d’entrées.
Cliquez sur le lien Éditer à gauche pour cette entrée puis, sous le champ option_value, ajoutez la structure de permalien que vous souhaitez utiliser. Utilisez les balises que nous avons identifiées précédemment pour les utiliser dans l’écran des réglages des permaliens.
Cliquez sur Go. Vos permaliens seront maintenant mis à jour.
Pour en savoir plus, consultez notre article : Comment changer votre URL WordPress ou la vidéo :
Travailler avec les permaliens d’images
Les images ont des permaliens qui leur sont propres, et chaque image ou fichier média que vous téléversez sur votre site aura un certain nombre de liens créés pour lui :
- Le lien vers l’image que vous avez téléversée – l’image originale.
- Liens pour les nouvelles images qui sont générées en utilisant les tailles de média que vous avez définies via Réglages > Média.
Le lien vers l’image originale
Lorsque vous téléversez une image, un lien unique sera créé vers le fichier où elle est stockée sur votre serveur. Il comprendra le chemin d’accès à l’endroit où il est conservé, à savoir wp-content/uploads.
Il comprendra également la date à laquelle vous avez téléversé l’image. Cela signifie que si vous téléversez une autre image avec le même nom de fichier le mois prochain (ou l’année prochaine), les images ne seront pas confondues car elles auront des chemins d’accès uniques.
Si vous téléversez une image appelée funnycat.jpg le 1er avril 2020, son lien sera votresite.com/wp-content/uploads/04/funnycat.jpg. Le 04 indique que le fichier a été téléversé en avril. WordPress crée un dossier numéroté dans le répertoire des téléversements pour chaque mois.
Si vous avez téléversé un fichier qui n’est pas une image, l’URL fonctionnera de la même manière : votresite.com/wp-content/uploads/04/document.pdf.
Si vous téléversez plusieurs fichiers portant le même nom au cours d’un mois donné, WordPress ajoutera un numéro à la fin du nom du fichier. Ainsi, si je téléverse une autre image appelée funnycat.jpg, il la nommera funnycat-1.jpg.
Si jamais vous avez besoin d’un lien vers l’image originale ou de la trouver pour vérifier son bon fonctionnement, voici comment trouver le lien.
Vous pouvez également trouver le lien vers le fichier joint en allant sur Médias > Bibliothèque et en cliquant sur le fichier. L’écran de modification s’affichera pour ce fichier et vous pourrez trouver son URL dans le champ URL du fichier sur le côté droit.
Vous pouvez également créer un lien vers le fichier en utilisant la fonction wp_get_attachment_image() fournie par WordPress. Il s’agit d’une meilleure pratique car cela signifie que le lien ne changera pas si le fichier joint est déplacé plus tard. Il s’agit d’une fonction que vous utiliseriez dans une extension ou un fichier de modèle de thème, et elle utilise l’ID unique du fichier joint.
Dans le cas de mon image funnycat.jpg, l’ID est 4995. Je peux l’obtenir en allant sur l’écran de modification de l’image et en cliquant sur l’URL de cet écran en haut de la fenêtre du navigateur. Les derniers chiffres seront l’ID.
Pour récupérer cette image dans un fichier modèle ou une extension, j’utiliserais ce code :
<?php wp_get_attachment image( ‘4995’ ); ?>
Cela permettrait d’obtenir l’image en taille réelle. Si je voulais l’afficher, j’ajouterais echo :
<?php echo wp_get_attachment image( ‘4995’ ); ?>
Permaliens vers des images de différentes tailles
WordPress créera également des images en utilisant les réglages de taille de fichier qui ont été configurés pour votre site. Pour ce faire, allez dans Réglages > Média.
Ainsi, si votre image est déjà plus grande que le réglage le plus grand, cela créera trois images – grande, moyenne et miniature.
Cela ne les nomme pas en utilisant ces conventions parce que vous pourriez changer le réglage de celles-ci à l’avenir. Au lieu de cela, cela utilise les dimensions du fichier dans le nom de fichier et les enregistre au même endroit que l’image originale, dans le dossier du mois dans wp-content/uploads.
Le moyen le plus simple de trouver les liens est de regarder dans votre client FTP et de trouver toutes les images téléversées au cours d’un mois donné.
Prenons l’image que j’ai mise en ligne sur mon site appelé funnycat.jpg. Vous pouvez la voir dans la capture d’écran ci-dessus.
WordPress a également créé des fichiers supplémentaires en utilisant les réglages de taille de fichier de mon site :
- funnycat-150×150.jpg
- funnycat-222×300.jpg
- funnycat-300×200.jpg
- funnycat-757×1024.jpg
- funnycat-768×1040.jpg
- funnycat-1135×1536.jpg
- funnycat-1513×2048.jpg
Il y en a plus que les standards car j’utilise des extensions qui utilisent des tailles d’images supplémentaires et qui ont défini une taille personnalisée supplémentaire pour l’un de mes modèles de page dans le thème. Mais vous pouvez utiliser le lien vers l’un d’entre eux comme un lien en dur si vous le souhaitez.
Cependant, une meilleure option si vous souhaitez créer un lien vers l’image, serait d’utiliser la fonction wp_get_attachment_image() que nous avons déjà examinée, et d’ajouter un paramètre supplémentaire pour la taille de l’image.
Pour produire une image de taille moyenne, il faut donc utiliser ceci :
<?php echo wp_get_attachment image( ‘4995’, ‘medium’ ); ?>
C’est un moyen beaucoup plus efficace de récupérer l’image que de créer un lien en dur dans votre code.
Comment rediriger les permaliens pour différents types de contenu
La modification du slug d’un article existant, ou la modification des réglages généraux du permalien, peut poser un problème si vous avez déjà partagé des articles en utilisant les anciens liens. Si quelqu’un clique ensuite sur ces liens, il sera dirigé vers une page 404.
Vous pouvez y remédier en créant des redirections des anciens liens vers les nouveaux.
Redirection des articles et des pages
Pour rediriger l’ancien slug d’un article vers le nouveau, vous devez définir une règle de redirection pour ces deux URLs.
Si vous êtes chez Kinsta, vous pouvez créer des règles de redirection dans le tableau de bord de MyKinsta.
Trouvez votre site, puis cliquez sur l’option Redirections dans le menu.
Cliquez sur le bouton Ajouter une règle de redirection pour ouvrir la fenêtre contextuelle des règles de redirection.
Pour ajouter votre redirection, sélectionnez la redirection 301, puis saisissez l’ancienne valeur dans Rediriger depuis et la nouvelle valeur dans Rediriger vers.
Cliquez sur le bouton Ajouter une règle de redirection et votre redirection sera configurée.
Si vous n’êtes pas chez Kinsta, vous pouvez utiliser une extension de redirection pour mettre en place des redirections. L’extension Redirection est la plus populaire. Elle vous permet de configurer les redirections manuellement, de surveiller les modifications de vos slugs et de configurer automatiquement les redirections pour vous. Veillez à éviter les boucles de redirection, car elles entraînent l’erreur « too many redirects », qui empêche le chargement des pages.
Ci-dessous, vous pouvez voir que j’ai changé le slug pour un de mes articles et que l’extension l’a rattrapée et a mis en place une règle de redirection.
Redirection des pages d’archives
Si vous changez la structure de vos pages d’archives à l’aide de la section facultative de la page des réglages des permaliens, toute personne utilisant l’ancien lien vers une catégorie d’archives sera amenée sur votre page 404. Vous devrez donc mettre en place une redirection par joker (wildcard).
Dans MyKinsta, créez une règle de redirection qui utilise la structure de base que vous utilisiez avant et celle que vous utilisez maintenant, avec un astérisque pour indiquer un joker après.
Dans le champ Rediriger depuis, saisissez l’ancien chemin vers les catégories, avec un joker. Il doit prendre la forme /ancienslug/(.*)$. L’entrée pour Rediriger vers doit prendre la forme /nouveauslug/$1.
Ainsi, si vous avez modifié la structure URL de votre catégorie pour utiliser blog avant le nom de la catégorie au lieu de la catégorie par défaut, vous devez saisir /category/(.*)$ dans le champ Rediriger depuis et /blog/$1 dans le champ Rediriger vers.
Si vous utilisez l’extension Redirection, vous devez d’abord activer les fonctions Regex, car l’astérisque est une fonction regex.
Allez dans Outils > Redirection et allez dans la section Ajouter une nouvelle redirection.
Cliquez sur le menu déroulant Options/Regex de l’URL et cochez la case Regex.
Dans le champ URL source, saisissez l’ancien chemin d’accès aux catégories, avec un joker. Il doit prendre la forme /ancienslug/(.*)$. L’entrée pour l’URL cible doit prendre la forme /nouveauslug/$1, ce qui fonctionne exactement de la même manière que dans MyKinsta.
Consultez notre guide vidéo sur les meilleures pratiques de redirection de WordPress :
Dépannage des permaliens WordPress
Il arrive parfois que les permaliens ne fonctionnent pas comme vous l’attendez. Voici ce qu’il faut faire si cela se produit.
Permalien ne fonctionnant pas après l’enregistrement d’un type de publication
Parfois, vous enregistrez un nouveau type de publication ou une nouvelle taxonomie et les liens vers les pages d’archives correspondantes ou vers les publications du type de publication ne fonctionnent pas.
Pas de panique ! C’est simplement parce que WordPress ne sait pas que le type de publication ou la taxonomie personnalisée impliquent une modification des réglages de permalien. Il suffit d’aller dans Réglages > Permaliens pour actualiser les réglages. Vous n’avez même pas besoin de faire des modifications ou de cliquer sur le bouton Enregistrer les modifications – il suffit d’ouvrir l’écran.
Permaliens ne se comportant pas comme vous le souhaitez
Si vos permaliens ne fonctionnent pas comme vous l’espérez et que ce n’est pas parce que vous venez d’enregistrer un type de publication personnalisé ou une taxonomie, essayez ces conseils.
- Vérifiez que vous avez correctement saisi l’URL dans le navigateur.
- Allez dans Réglages > Permaliens et vérifiez la configuration. Les balises sont-elles correctes ? Vérifiez que vous n’avez rien manqué ou que vous n’avez pas utilisé la mauvaise syntaxe.
- Videz le cache de votre site web si vous utilisez une extension de mise en cache. La mise en cache peut interférer avec les modifications apportées aux liens.
- Si vous avez modifié les réglages des permaliens, il se peut que le corps du contenu de votre site web contienne des liens qui ne sont plus à jour. Modifiez-les ou mettez en place des redirections.
- Vérifiez si vous avez modifié manuellement le slug de certains articles et si ceux-ci doivent être modifiés.
- Vérifiez si vous avez une extension de redirection installée ou une extension qui inclut la redirection. Si c’est le cas, vérifiez les redirections que vous avez ajoutées aux réglages.
- Si vous avez des extensions qui affectent les types de publication ou les liens, essayez de les désactiver et voyez si cela résout le problème.
- Si vous ne pouvez pas accéder à l’écran des réglages des permaliens, utilisez la méthode détaillée plus haut pour modifier les permaliens via phpMyAdmin.
Suivez ces conseils et vous devriez être en mesure de faire fonctionner vos permaliens comme il se doit.
Résumé
Les permaliens sont une fonctionnalité incroyablement utile de WordPress. Vous pouvez les utiliser pour améliorer l’expérience des utilisateurs et améliorer votre classement dans les moteurs de recherche.
Si vous suivez le guide ci-dessus, vous aurez des permaliens optimisés. Vous pourrez les configurer pour qu’ils fonctionnent exactement comme vous le souhaitez, pour tous les types de publications, les taxonomies et les slugs personnalisés.
Maintenant, c’est à votre tour : comment gérez-vous vos permaliens ? Avons-nous oublié de parler de quelque chose au sujet des permaliens de WordPress ? Faites-le nous savoir dans les commentaires ci-dessous !
Laisser un commentaire