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

16

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

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

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

http://example.com/product/142

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

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

Lea Hayes
la source

Réponses:

33

C'est ce que j'utilise pour réécrire les URL de type de message personnalisé avec l'ID du message. Vous avez besoin d'une règle de réécriture pour traduire les demandes d'URL, ainsi que d'un filtre post_type_linkpour 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' );
}
Milo
la source
Salut @milo cela me fonctionne parfaitement ... mais je veux quelques changements s'il vous plaît pouvez-vous me guider
deemi-D-nadeem