Comment réécrire l'URI du type de message personnalisé?

11

Le site sur lequel je travaille utilise la "jolie" structure permalienne suivante:

http://example.com/blog/my-special-post

Mais pour un type de message personnalisé, mon client souhaite éviter d'avoir un "joli" slug:

http://example.com/product/142

Comment l'identifiant de publication peut-il être utilisé à la place du slug pour le type de publication personnalisé?

Je pense que cela pourrait être possible avec WP_Rewrite, mais je ne sais pas par où commencer.

    
posée Lea Hayes 12.11.2011 - 01:13

1 réponse

28

C’est ce que j’utilise pour réécrire les URL de type publication personnalisées avec l’ID de publication. Vous avez besoin d'une règle de réécriture pour traduire les demandes d'URL, ainsi que d'un filtre sur post_type_link pour renvoyer les URL correctes pour tous les appels à get_post_permalink() :

add_filter('post_type_link', 'wpse33551_post_type_link', 1, 3);

function wpse33551_post_type_link( $link, $post = 0 ){
    if ( $post->post_type == 'product' ){
        return home_url( 'product/' . $post->ID );
    } else {
        return $link;
    }
}

add_action( 'init', 'wpse33551_rewrites_init' );

function wpse33551_rewrites_init(){
    add_rewrite_rule(
        'product/([0-9]+)?$',
        'index.php?post_type=product&p=$matches[1]',
        'top' );
}
    
réponse donnée Milo 12.11.2011 - 03:19

Lire d'autres questions sur les étiquettes