web-dev-qa-db-fra.com

Permaliens personnalisés

Nous avons un type personnalisé music.

/music/
/music/post-name/

De plus, nous avons une taxonomie semblable à un tag genres. Ses URL sont:

/music-genres/genre-name/

J'essaye de faire des urls comme:

/music/
/music/post-name/
/music/genres/
/music/genres/genre-name/

/music-genres/ devrait être remplacé par /music/genres/.

Enfin, nous devrions avoir une structure d’URL comme:

/post-type/taxonomy/term/
/post-type/postname/

Comment puis-je faire cela?

3
ilovewordpress

Oui, cela est possible car votre structure genres est /music/genres/[genre-name]. Si c'était /music/[genre-name], ce serait compliqué car cela entrerait en conflit avec /music/[post-name].

Vous devez juste garder l'ordre à l'esprit. Les règles de réécriture doivent être classées du plus spécifique au moins spécifique. Si vous enregistrez d'abord le type de message, puis la taxonomie, les règles relatives au type de message seront traitées en premier. Le problème est que les règles de type publication contiennent une règle très générique pour faire correspondre les pièces jointes, ce qui perturberait nos termes de taxonomie. Mais cela fonctionnera si vous enregistrez d'abord la taxonomie puis le type de publication.

Le problème est que vous transmettez normalement les types de publication qui utiliseront la taxonomie que vous enregistrez, mais vous pouvez simplement transmettre le tableau vide et établir la connexion ultérieurement.

add_action( 'init', 'wpse13608_init' );
function wpse13608_init()
{
    register_taxonomy(
        'music-genre',
        array(),
        array(
            'rewrite' => array(
                'slug' => 'music/genre'
            ),
        )
    );
    register_post_type( 'music' );
    register_taxonomy_for_object_type( 'music-genre', 'music' );
}

Vous pouvez le vérifier et jouer avec vos règles avec mon plugin d'analyse Rewrite .

3
Jan Fabry

Vous pouvez peut-être trouver des informations sur ce post: Types de post personnalisés, taxonomies et permaliens

1
rofflox

WordPress ne prend pas en charge la surcharge des structures de liens permanents au degré souhaité. Vous pouvez écrire votre propre filtre de pré-réécriture pour convertir les URL souhaitées en URL que WP_Rewrite peut reconnaître, puis écrire des filtres pour convertir les liens générés par WordPress dans votre propre style.

Pour comprendre cela, étudiez WP_Rewrite::generate_rewrite_rules et WP::parse_request, généralement considérés comme "vaudous".

1
Andy