Custom post type et url des pages

16725
,

Salut à tous,

J'ai créé un CPT dans lequel, suite à une demande client, je modifie le slug par le nom de l'auteur.

Dans la déclaration de mon CPT je fais ceci:

...
'rewrite' => array( 'slug' =>'%author%' ),
...

Ensuite je mets un filtre comme ceci:

add_filter('post_type_link', 'change_author_tag',10,4);
function change_author_tag($post_link, $post, $leavename, $sample){
    if( 'magasins' == get_post_type($post) ){ 
        //POUR LES AUHTOR
        $authordata = get_userdata($post->post_author);
        $author = $authordata->user_nicename;
        $post_link = str_replace('%author%', $author, $post_link);
    }
    return $post_link;
}

Cela fonction bien, les urls sont bien modifiées comme je le souhaite.

Maintenant, lorsque j'ajoute une page de façon tout à fait classique, je me retrouve avec une erreur 404.

Donc en gros dès que je mets en place ma bidouille pour modifier les URLs, je me retrouve un problème d'url ailleurs.

Je pensai y passer qq minutes et puis en fait ça fait presque 2 jours que je me casse les dents...

Avez vous une idée / piste / lien ou n'importe quoi qui pourrait m'aider à résoudre mon soucis?

Merci à vous !

2 Réponse

Default
,

Salut,

Tout d'abord, avant de te lancer dans la mise en place de méthodes et fonctions un peu particulières, je t'invite à utiliser ce plugin qui répondra sans doute à tes besoin : https://wordpress.org/plugins/custom-permalinks/

L'avantage d'utiliser un plugin, c'est que même en cas de changement de thème, de v2, etc, tu conserveras les réglages des permalinks puisque ceux-ci ne seront pas liés au thème.

Concernant ton problème en particulier, on a trop peu de visibilité sur le code pour pouvoir réellement t'aider, mais à te lire un truc me choque : "je modifie le slug par le nom de l'auteur". Ouais, mais du coup, tu te retrouves avec potentiellement plusieurs articles (plusieurs posts de ce CPT donc) qui vont avoir la même url parce qu'ils auront le même auteur. Ce qui évidemment pose un problème de ré écriture d'URL.

Le fait que tu puisses avoir des 404 ailleurs est dû, à mon sens, que tu surcharges un petit peu à l'arrache une structure de permalinks déjà utilisée par Wordpress au départ. En effet, de base, un url du type http://baseurl.ext/%author% est utilisée pour lister les posts de l'auteur en question. Cela vaut par défaut pour les articles, mais il me semble que c'est également le cas pour les CPT et les pages.

Du coup, des erreurs 404 sur les pages ne m'étonnent pas plus que ça, étant donné qu'il y a surcharge du système existant au départ sans prise de précautions pour ne rien casser.

En espérant que mes remarques puissent t'aider à y voir plus clair ;)

Default
,

L’utilisation diversifiée exige davantage de types de contenu, car les publications, les pages et les médias ne suffisent pas et c’est ici que le WordPress custom post type est utile. Une fois que vous avez terminé, vous pouvez facilement créer un type de message personnalisé WordPress à l'aide de ce guide.