web-dev-qa-db-fra.com

Comment réécrire l'URI de type post personnalisé?

Le site sur lequel je travaille utilise la "jolie" structure permalien 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.

14
Lea Hayes

C’est ce que j’utilise pour réécrire des 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' );
}
30
Milo