web-dev-qa-db-fra.com

Créer une structure de lien permanent pour une archive de taxonomie par type de publication personnalisée

Donc, je suis devenu fou en essayant de comprendre cela. Pour l’essentiel, j’ai créé deux types de publication personnalisés, 'the_case_study 'et 'the_video', avec les slugs respectifs 'case-studies' et 'videos'.

J'ai également créé trois taxonomies qui s'appliquent à la fois à the_case_study et à the_video. Ce sont 'the_room', 'the_system' et 'the_style'.

Par défaut, l'archive de taxonomie afficheall poststagged avec un terme donné, et le permalien ressemble à ceci:

example.com/room/kitchen (displays all posts tagged with kitchen)

Je voudrais avoir une archive de taxonomie quiaffichera uniquement les publications du type de publication personnalisé actuelet aura un lien permanent qui est relatif à ce type de publication personnalisée. Par exemple:

example.com/case-studies/room/kitchen (should display all case studies tagged with kitchen)

example.com/videos/room/kitchen (should display all videos tagged with kitchen)

J'ai déjà résolu un problème similaire ailleurs sur le site, basé sur cette réponse entre autres choses. Cependant, je ne sais comment faire fonctionner cela que pour un type de poste.

Cela semble être quelque chose qui devrait être possible, mais je ne sais pas comment s'y prendre. Essentiellement, j'aimerais pouvoir trouver le parent de la page de taxonomie actuelle, où ce parent est le type de publication personnalisé actuel ... mais je ne suis pas sûr de savoir comment cela se passe avec les contraintes de type de publication personnalisée et de taxonomie.

Est-ce que ce que j'essaie de faire est possible? Devrais-je penser différemment?

4
jpsingleton

C'est très facile à faire en ajoutant des règles de réécriture personnalisées. Cela devrait vous aider à démarrer:

add_action( 'init', 'wpse_100386_rewrites' );
function wpse_100386_rewrites() {
    add_rewrite_rule( 'case-studies/room/([^/]+)/?', 'index.php?the_room=$matches[1]&post_type=the_case_study', 'top' );
    add_rewrite_rule( 'videos/room/([^/]+)/?', 'index.php?the_room=$matches[1]&post_type=the_video', 'top' );
}

Comme toujours lorsque vous modifiez les règles de réécriture, veillez à vider vos règles de réécriture en accédant à Paramètres -> Permaliens et en cliquant sur "Enregistrer les modifications".

1
Matthew Boynes