Donc cela me rend absolument fou. J'ai passé des jours à essayer de résoudre ce problème et je ne peux pas comprendre pourquoi c'est si difficile car il s'agit sûrement d'une structure de permalien très courante!
J'ai regardé des centaines de réponses et de messages et aucun d'eux ne semble résoudre le problème.
Je veux simplement cette structure:
mysite.com/custom-post-type/custom-taxonomy-term/post-name
Je réalise donc ce qui suit:
mysite.com/literature - all literature posts
mysite.com/literature/fiction - all literature posts with 'fiction' term
mysite.com/literature/fiction/mybook - the post
Chaque fois que j'essaie quelque chose, j'obtiens des erreurs 404 ou la pagnination ne fonctionne pas.
Je ne comprends pas pourquoi c'est si difficile!
Toute aide vraiment appréciée!
Je vous remercie
================================================== ==== ================== INFORMATIONS COMPLÉMENTAIRES ==================
Actuellement, j'enregistre le type de message et la taxonomie comme suit:
register_post_type('literature',$args);
'rewrite' => array('slug' => 'literature/books','with_front' => false),
register_taxonomy('literature_category',array('literature'), array(
'rewrite' => array( 'slug' => 'literature','with_front' => false ),
Si j'enregistre les deux en tant que «littérature», j'obtiens un 404 sur la page mysite.com/literature mais cela affiche mon permalien comme: mysite.com/literature/books/mybook
Après avoir suivi les conseils sur cette question - Types de publication personnalisés, taxonomies et permaliens
J'ai ajouté ceci à mes fonctions:
function filter_post_type_link($link, $post) {
if ($post->post_type != 'literature')
return $link;
if ($cats = get_the_terms($post->ID, 'literature_category'))
$link = str_replace('%literature_category%', array_pop($cats)->slug, $link);
return $link;
}
add_filter('post_type_link', 'filter_post_type_link', 10, 2);
Et changé mon type de message en 'slug' => 'literature/%literature_category%'
Et changé ma taxonomie en'slug' => 'literature'
Cela fonctionne très bien, sauf que la mysite.com/literature
pagination ne fonctionne pas, donc j'obtiens une erreur 404 sur l'url suivante:
mysite.com/literature/page/2/
Réponses:
Suivez les conseils sur cette question comme vous l'avez déjà fait, mais ajoutez-le à votre code:
Enfin, accédez à Paramètres> Permaliens et appuyez sur Enregistrer. Si cela ne fonctionne toujours pas, enregistrez à nouveau vos permaliens. Parfois, j'ai l'impression que vous devez les sauver deux fois, mais qui sait. Quoi qu'il en soit, faites-moi savoir comment vous vous débrouillez. Notez que la réponse standard # 1 en informatique s'applique: ça marche pour moi ... ;-)
Du pays de TMI ...
Pour référence, la raison pour laquelle les pages ne fonctionnent pas par défaut est que WordPress met en place une règle de réécriture pour la littérature /% littérature_catégorie% /% livre% /% page%, ce qui est parfaitement logique si vous y pensez. Vos permaliens par défaut ont donc ces règles concurrentes dans cet ordre:
Tout ce que nous faisons ici est de changer l'ordre de ceux-ci en désélectionnant ce dernier (nous pouvons le conserver, mais chaque réécriture a ensuite une expression régulière de plus à exécuter au chargement de la page) et en l'ajoutant au début du tableau.
Fait amusant: si vous avez déjà un "livre" intitulé "page" et qu'il a plusieurs pages, cette commande sera en conflit et ses pages suivantes ne fonctionneront pas!
la source