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.
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' );
}