web-dev-qa-db-fra.com

Supprimer la base de taxonomie personnalisée

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?

3
Carson

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 );
}
1
Jan Fabry

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

1
Noel Tock

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:

  • Personnalisation du fichier htaccess généré par WordPress;
  • Suppression de la base de slug de toute taxonomie personnaliséedes permaliens;
  • Suppression de la base de catégories des permaliens;
  • Suppression de la base d’auteurs des permaliens;
  • Personnalisation de la base de permalink d’auteurs;
  • Personnalisation des liens permanents paginés (traduisez la "page" Word sur les liens permanents dans votre langue);
  • Personnalisation (et canonisation) de la base de permalien de recherche;
  • Création d'archives par catégorie, auteur, étiquette et taxonomie personnalisée (ex: "http://votre-site.com/category/stories/2010/12", "http://votre-site.com/author/admin/ 2010/12/page/2 "et" http://votre-site.com/tag/wordpress/2010/12 "), cela fonctionnera également si vous avez supprimé le slug de base;
  • Mode de Maintenance;
  • redirection wp-login.php.

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!

1
WordPressed