Supprimer l’identifiant des custom post type dans WordPress

Supprimer l’identifiant des custom post type dans WordPress

Niveau intermédiaire
5 1 vote
Évaluation de l'article

Afin d’améliorer votre référencement, il peut être nécessaire de supprimer l’identifiant des custom post type. Dans cet article, je vais vous expliquer comment le faire.

Qu’est-ce que les custom post types ?

De base, WordPress comprend deux post types : les pages et les articles (posts). Selon les cas de figure, il peut être nécessaire de créer d’autres éléments de contenu. Prenons par exemple WooCommerce, qui crée ses propres post types, à savoir les produits. D’autres thèmes peuvent inclure une section portfolio ou services.

C’est ce que l’on appelle des custom post types. Selon leurs paramètres, ils peuvent comporter ou non des taxonomies (étiquettes ou catégories), avoir une URL qui leur est propre ou être simplement accessibles en étant intégrés dans un article ou une page.

Vos custom post types peuvent être créés par le code ou encore à l’aide de plugins comme Custom Post Type UI.

Pourquoi utiliser des custom post types dans WordPress ?

L’intérêt se résume en un mot : organisation !

Créer des custom post types vous permettra d’organiser les informations de votre site afin de ne pas tout mélanger.

D’un côté, vous pourrez avoir un blog, de l’autre vos pages, mais également créer des posts pour de la documentation, des projets ou services professionnels, des biens à louer… Bref, la liste est longue !

Ensuite, vous pourrez créer des modèles de page personnalisés dans vos thèmes ou constructeurs de page afin d’attribuer une mise en page à un custom post type, afficher un certain type de contenu grâce à des requêtes ou des loop WordPress.

Pourquoi supprimer l’identifiant des custom post type dans WordPress ?

Organiser votre backoffice

L’identifiant est appelé aussi “slug” dans WordPress. Par exemple, actuellement sur ce site, vous avez “tutoriaux-wordpress” dans l’adresse de cette page. Il s’agit de l’identifiant de mon custom post type “Blog”. Je le retrouve dans mon administration, sous un menu “Blog”. Mon modèle d’article est donc www.monsite.fr/tutoriaux-wordpress/mon-titre-article.

Si je n’avais pas besoin de créer une page listant tous les articles du blog, je pourrais toujours garder mon menu “Blog” dans mon administration, mais donner un accès à mes articles sous cette adresse. Mon modèle d’article serait donc www.monsite.fr/mon-titre-article. Ainsi, pour le visiteur et pour Google, on a l’impression qu’il s’agit d’une page, mais dans mon administration, je pourrais tout organiser.

Suppression des slugs des custom post type : l’impact sur le SEO

Les URL sont traitées comme n’importe quel lien par Google, cependant, une URL courte sera mieux interprétée par les moteurs de recherche. Vous pourriez viser la position zéro.

Ainsi, mon-site.fr/services/charpentier sera moins pertinent que mon-site.fr/charpentier.

Actuellement sur mon site, je devrais apporter ces modifications à mes anciennes pages. Je l’ai déjà fait sur les nouvelles que j’indexe, mais c’est un travail que je devrai entreprendre.

Dans le deuxième cas, l’information est claire : mon-site.fr est un charpentier. Simple et rapide.

Prenons également en compte que les URL plus simples vous permettront une meilleure expérience utilisateur. Plus courtes, elles restent plus simples et sont facilement mémorables. Enfin, sans ce slug, vous aurez plus d’espace pour placer davantage de mots clés dans vos URL d’articles, de projets…”

Comment supprimer les slugs dans WordPress ?

J’ai épluché énormément de forums, ou de blogs afin de trouver un code fonctionnel, et c’est difficile à trouver, il faut le dire. J’y ai laissé des cheveux blancs par poignées !
WordPress fonctionne avec des slugs. C’est pourquoi, lorsque vous faites une modification de ce type, une page 404 s’affiche.

De mon côté, ce code a fonctionné MAIS, j’ai dû créer un nouveau custom post type pour qu’il fonctionne. Mettre en place ce code sur un cpt existant créait soit une 404, soit transformait mon url en “?slug-cpt=titre-article“.

Si votre custom post type existe déjà et qu’il contient déjà des articles, créez en un nouveau et utilisez le plugin Post type switcher pour basculer vos articles entre les deux custom post types.


Avant d’appliquer ce code, assurez-vous, que vos permaliens soient bien configurés ainsi :

Supprimer l'identifiant des custom post type dans WordPress :  Configuration des permaliens de WordPress

Créez votre propre custom post type dans votre thème, je vous ai fait un article sur comment créer ses custom post type sans plugin.

Puis ajoutez ces lignes de code dans votre fichier où se trouve le custom post type ou dans functions.php :

function inumed_mon_cpt_suppression_slug( $post_link, $post ) { // on utilise le lien et l'article comme paramètres de la fonction
    if ( 'slug-cpt' === $post->post_type && 'publish' === $post->post_status ) { // Si le post type est l'identifiant de mon cpt et que le post est publié       
        $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link ); // On remplace le lien de l'article par '/'
    }
    return $post_link; // On retourne le nouveau lien 
}

add_filter( 'post_type_link', 'inumed_mon_cpt_suppression_slug', 10, 2 );

Il s’agit d’un filtre, il va donc être appliqué

Voila votre identifiant de votre custom post type a disparu. Cependant, gardez bien en mémoire que cette technique reste fragile, car encore une fois WordPress force l’utilisation des slugs. Il proposera peut-être dans un avenir proche de faciliter cette technique.

Un soucis sur WordPress ?

Bénéficiez de 30 minutes gratuites pour me parler de votre problème technique