le MEMO du WEB développeur
••• Wordpress •••  Liste des Mémos, astuces et bonnes pratiques

Personnaliser les permaliens des Custom Post Type

Il est possible de customiser les permaliens des custom post type grâce (entre autres) au paramètre "rewrite" de la fonction register_post_type.

Voici ci dessous un exemple de déclaration de custom post type "temoignage"

add_action('init', 'CT_temoignage');
function CT_temoignage()
{
  register_post_type('temoignage', array(
   'label' => __('Témoignages'),
   'singular_label' => __('Témoignage'),
   'public' => true,
   'has_archive' => true,
   'show_ui' => true,
   'capability_type' => 'post',
   'hierarchical' => false,
   'taxonomies'=> array ('category', 'post_tag'),
   'supports' => array('title', 'author', 'editor', 'thumbnail','excerpt','revisions','page-attributes'),
   'menu_position'=>5,
   'rewrite'=>true
  ));
} 

Le paramètre "rewrite" admet comme valeur un boolean ou un tableau, par défaut sa valeur est true, et l'on peut dans l'exemple ci dessus accéder à un article de custom post type "temoignage" (et de slug mon-article) par l'URL :

http://mon-site.fr/temoignage/mon-article

Remplaçons le boolean par un tableau

'rewrite' => array('slug' => 'memo-temoignages','with_front' => true)    

L'article sera alors accessible par l'URL :

http://mon-site.fr/memo-temoignages/mon-article

Le paramètres with_front, quant à lui défini si l'on prend en compte dans l'URL la structure des permaliens par défaut que vous avez défini dans les paramètres des permaliens du site dans "Réglages > Permaliens".

Si votre structure de permaliens par défaut est /blog alors :

  • 'with_front' => true → URL : http://mon-site.fr/blog/memo-temoignages/mon-article
  • 'with_front' => false → URL : http://mon-site.fr/memo-temoignages/mon-article

Voici un article très complet an anglais sur le sujet.

Chaque fois que vous changez la structure des permaliens dans le code, n'oubliez pas de sauver manuellement la structure dans Réglages > Permaliens, pour que les modifications soient prises en compte. 
Une autre solution consiste à appeler flush_rewrite_rules()
publié le 18/11/2014 par Memo Web
Commenter le Mémo :

Recadrer une miniature (thumbnail) WordPress
WordPress en multisite, passer du fonctionnement sous domaine au sous répertoire
Liste des catégories Wordpress. Exclure certaines catégories
Récupére l'ID d'un post/page en dehors de la boucle WordPress
Comment laisser l'affichage de the_excerpt() si l'extrait est laissé vide dans l'administration de WordPress
Ajouter un favicon à votre site Wordpress
Ne pas afficher les commentaires sur les pages d'un siteWordpress
Changer la longeur de l'extrait / exerpt dans Wordpress
Boucle sur les Custom Post Types
Installer Bedrock avec Wamp Serveur
Ajoutez vos propres Mémos sur MEMO-WEB

Il suffit de vous créer un compte sur le site

Vous pourrez choisir un thème parmis l'une des catégories proposées par MEMO-WEB.

Rédigez votre Mémo.
Après validation par MEMO-WEB, il sera mis en ligne.
Ajouter vos Mémos