web-dev-qa-db-fra.com

Suppression de la base de taxonomie à l'aide de WP récrire

J'essaie de créer la structure d'URL suivante:

example.com/attractions                     <-- post type archive
example.com/attractions/taxonomy_term       <-- taxonomy archive
example.com/attractions/van-gogh-museum     <-- custom post type

Malheureusement, cela n’est pas possible par défaut: WordPress a besoin de la base de taxonomie dans l’URL, comme l’a dit sanchothefat, utilisateur de SE, dans sa réponse à cette question :

... si vous ne voulez pas que la taxonomie-slug soit là, alors vous n'avez pas de chance, vous ne pouvez pas avoir le même slug que votre type de message ou une autre taxonomie car il ne saura pas quel terme est de quelle taxonomie et quel est un post.

En d'autres termes, WordPress a besoin de cette structure permalien:

example.com/attractions/taxonomy_base/taxonomy_term

Ma question: Y a-t-il un moyen de faire fonctionner cela en utilisant l'API de réécriture de WordPress?

Je suppose que cela implique 2 étapes:

  1. Supprimer la base de taxonomie de l'URL
  2. Indiquer à WordPress quel type de message il doit afficher

Mise à jour # 1

J'ai trouvé un extrait de code qui devrait supprimer la base de taxonomie de l'URL:

global $wp_rewrite;
$wp_rewrite->extra_permastructs['taxonomy_base'] = array('%taxonomy_base%', EP_NONE);

( Source - voir la dernière réponse en bas de page)

Ce n’est cependant pas une solution complète, car WordPress ne peut pas dire si le message est une archive de taxonomie ou un type de message ...


Mise à jour # 2

L'auteur de cet excellent article on Requêtes de taxonomie avancées avec de jolies URL m'a écrit:

Ce que vous demandez n'est pas trop difficile, mais cela pourrait être un peu délicat. Les règles de réécriture ont besoin de savoir quel genre de chose est le deuxième terme (..). C'est pourquoi le préfixe category/tag/taxonomy Vous pouvez créer une réécriture pour que tout after/attractions/est traité comme une URL de taxonomie, mais le fait de faire les deux devient un peu délicat.


Mise à jour # 3

Pour ceux qui ont le même problème, regardez cette discussion sur WordPress Answers. Le code du plugin de MikeSchinkel pourrait être utile.

Voici un exemple intéressant de WPCandy combinant la base de taxonomie et le terme dans l'URL: http://wpcandy.com/pros/experienced/with-multisite

4
Mattvic

Récemment, j’ai rencontré la même situation et, après une journée passée à chercher une solution sans pouvoir en trouver, j’ai écrit ma propre working solution.

L'astuce consiste à utiliser Wordpress wp_rewrite, et à y ajouter vos URL lorsque Wordpress génère ses liens permanents au début.

J'ai écrit une fonction simple pour tout faire automatiquement et tout expliqué sur mon blog (vous ne voulez pas coller le même code deux fois), alors n'hésitez pas à le vérifier;)

http://someweblog.com/wordpress-custom-taxonomy-with-same-slug-as-custom-post-type/

1
Some Web Guy

Je viens d'ajouter un plugin à l'annuaire Wordpress qui supprime la base du slug pour toute taxonomie personnalisée et la taxonomie de catégorie par défaut. Vous pouvez le trouver ici - http://wordpress.org/extend/plugins/wp-no-taxonomy-base/

1
David DiGiovanni