Our Journal

11 octobre 2016
|

WordPress Custom type gere l’url et le SEO

souvent confronter à la même question, utilisation d’une page template pour lister mes custom type dans WordPress ou utiliser les Archives et comment bien le géré avec des contrainte de flexibilité pour le SEO. Il est conseillé de limiter l’utilisation du wp_query qui demande plus de ressource que le systéme standard d’utilisation des archives_{custome_type}.php

La solution ce trouve à la création du custom_post_type lors de la déclaration en utilisant la fonction register_post_type

Pour cette explication à travers l’exemple nous allons utilisez les arguments suivant “archive_has” et “rewrite”

1/ register_post_type sans argument :

register_post_type('lieux',
array(
'labels' => array(
'name' => __('lieux', TIL_TEXTDOMAIN),
'singular_name' => __('lieu', TIL_TEXTDOMAIN),
'menu_name' => __('Lieux', TIL_TEXTDOMAIN),
'all_items' => __('Tous les lieux', TIL_TEXTDOMAIN)
),
'supports' => array('title', 'editor', 'thumbnail', 'excerpt', 'revisions', 'post_tag'),
'public' => true,
'taxonomies' => array( 'post_tag' ),
)
);

Résultat :

  • url http://nom-de-domain/lieux/article/
  • Breadcrumb Home>>article
  • La page de liste de lieux archive-lieux.php (url http://nom-de-domain/lieux/) est inaccessible “erreur 404”

2/ register_post_type avec l’argument “archive_has” à true  :

register_post_type('lieux',
array(
'labels' => array(
'name' => __('lieux', TIL_TEXTDOMAIN),
'singular_name' => __('lieu', TIL_TEXTDOMAIN),
'menu_name' => __('Lieux', TIL_TEXTDOMAIN),
'all_items' => __('Tous les lieux', TIL_TEXTDOMAIN)
),
'supports' => array('title', 'editor', 'thumbnail', 'excerpt', 'revisions', 'post_tag'),
'public' => true,
'has_archive' => true,
'taxonomies' => array( 'post_tag' ),
)
);

Résultat :

  • url http://nom-de-domain/lieux/article/
  • Breadcrumb Home>>lieux>>article
  • La page lieux est archive-lieux.php est fonctionnel

3/ register_post_type avec les arguments “archive_has” à true et  “rewrite” :

register_post_type('lieux',
array(
'labels' => array(
'name' => __('lieux', TIL_TEXTDOMAIN),
'singular_name' => __('lieu', TIL_TEXTDOMAIN),
'menu_name' => __('Lieux', TIL_TEXTDOMAIN),
'all_items' => __('Tous les lieux', TIL_TEXTDOMAIN)
),
'rewrite' => array(
'slug' => __('places', TIL_TEXTDOMAIN),
),
'supports' => array('title', 'editor', 'thumbnail', 'excerpt', 'revisions', 'post_tag'),
'public' => true,
'has_archive' => true,
'taxonomies' => array( 'post_tag' ),
)
);

Résultat :

  • url http://nom-de-domain/places/article/ (modification de l’url “lieux” deviens “places”)
  • Breadcrumb Home>>lieux>>article (le breadcrumb conserve le titre du custom type)
  • La page lieux est archive-lieux.php est fonctionnel est accessible à http://nom-de-domain/places

4/ register_post_type avec les arguments “archive_has” à true et  “rewrite” modification du arguments “name” :

register_post_type('lieux',
array(
'labels' => array(
'name' => __('Places', TIL_TEXTDOMAIN),
'singular_name' => __('lieu', TIL_TEXTDOMAIN),
'menu_name' => __('Lieux', TIL_TEXTDOMAIN),
'all_items' => __('Tous les lieux', TIL_TEXTDOMAIN)
),
'rewrite' => array(
'slug' => __('places', TIL_TEXTDOMAIN),
),
'supports' => array('title', 'editor', 'thumbnail', 'excerpt', 'revisions', 'post_tag'),
'public' => true,
'has_archive' => true,
'taxonomies' => array( 'post_tag' ),
)
);

Résultat :

  • url http://nom-de-domain/places/article/
  • Breadcrumb Home>>Places>>article
    le breadcrumb affiche le titre saisie dans l’argument “name”
  • Du coté de l’administration, rien ne change, le titre reste Lieux, seul le front est modifier.
6