J'utilise des taxonomies personnalisées avec WordPress 3.0.4
Je me demande si quelqu'un sait comment supprimer la base de taxonomie de l'URL?
J'ai vu des plugins le faire pour les catégories et les tags, mais pas pour les taxonomies personnalisées.
Par exemple, j'ai une taxonomie personnalisée appelée "villes". J'aimerais que ma structure d'URL soit mydomain.com/newyork au lieu de mydomain.com/cities/newyork
Y a-t-il une fonction ou quelque chose que je peux utiliser?
Je pense que cela est possible, mais vous devrez surveiller l'ordre des règles de réécriture. Pour vous aider avec ceci, je recommande un plugin que j'ai écrit pour analyser les règles de réécriture (bientôt disponible dans le référentiel, mais vous pouvez télécharger une pré-version ).
Tout d'abord, ces règles sont assez génériques et devraient donc se situer à la fin de la liste des règles. L'action par défaut consiste à les placer en haut de la liste. Nous les empêchons donc et les ajoutons nous-mêmes. Nous avons déjà les règles de page génériques en bas, nous devons donc les rendre explicites et les déplacer vers le haut en activantrègles de page verbeuses. Ce n'est pas efficace lorsque vous avez beaucoup de pages, mais je ne pense pas qu'il existe un autre moyen de le faire maintenant.
add_action( 'init', 'wpse6342_init' );
function wpse6342_init()
{
// Register your taxonomy. `'rewrite' => false` is important here
register_taxonomy( 'wpse6342', 'post', array(
'rewrite' => false,
'label' => 'WPSE 6342',
) );
// Enable verbose page rules, so all pages get explicit and not generic rules
$GLOBALS['wp_rewrite']->use_verbose_page_rules = true;
}
add_action( 'generate_rewrite_rules', 'wpse6342_generate_rewrite_rules' );
function wpse6342_generate_rewrite_rules( &$wp_rewrite )
{
// This code is based on the rewrite code in `register_taxonomy()`
// This rewrite tag (%wpse6342%) is just a placeholder to use in the next line
// 'wpse6342=` should be the same as the `query_var` when registering the taxonomy
// which is the name of the taxonomy by default
// `(.+?)` works for a hierarchical taxonomy
$wp_rewrite->add_rewrite_tag( '%wpse6342%', '(.+?)', 'wpse6342=' );
// This will generate the actual rewrite rules, and put the at the end of the list
$wp_rewrite->rules += $wp_rewrite->generate_rewrite_rules( $wp_rewrite->front . '%wpse6342%', EP_NONE );
}
La réécriture du slug (-> pour vider) dans l'enregistrement de la taxonomie ne fonctionnera pas, alors je ne suis pas sûr des autres options disponibles dans WordPress. Vous devrez probablement modifier le fichier .htaccess directement pour répondre à vos besoins.
Cependant, un mot d'attention à cette configuration permalien; Otto décrit très bien le problème ici: http://ottopress.com/2010/category-in-permalinks-considered-harmful/ .
À votre santé
Noel
J'ai essayé le WP Pas de plugin Taxonomy Base mentionné par l'auteur des plugins et cela n'a pas fonctionné pour moi. Au début, j'étais optimiste, cela ferait l'affaire, mais ensuite, j'ai remarqué que tous les permaliens du site continuaient à conserver le slug de base. Ce n’est qu’après avoir navigué vers l’une des destinations de liaison que le slug de base a été supprimé, mais il est resté persistant dans tous les permaliens du site, ce qui va à l’encontre du but recherché.
J'ai entendu dire que certaines personnes ont réussi à faire ce que vous voudriez faire à l'aide du plugin WP htaccess Control . Son auteur répertorie les fonctionnalités suivantes:
J'ai personnellement eu des problèmes pour que le plugin enregistre mes nouveaux paramètres à chaque fois que je l'ai essayé. Il voulait se connecter à "https" au lieu de "http" lors de la sauvegarde et émettrait une erreur s’il ne le pouvait pas. Cependant, vous aurez peut-être plus de chance!