Mon paramètre actuel de permalien est /%postname%/%post_id%/
. Voudrais utiliser la même chose avec CPT. Actuellement, l'URL ressemble à site.com/questions/title/
Voudrait obtenir le post-id à la fin de l'URL sur chaque post du cpt, semblable à celui du post post ...
La fonction la plus proche que j'ai trouvée est ... (qui produit sites.com/questions/postid/)
add_filter('post_type_link', 'change_post_type_link', 1, 3);
function change_post_type_link( $link, $post = 0 ){
if ( $post->post_type == 'questions' ){
return home_url( 'questions/' . $post->ID );
} else {
return $link;
}
}
add_action( 'init', 'change_rewrites_init' );
function change_rewrites_init(){
add_rewrite_rule(
'questions/([0-9]+)?$',
'index.php?post_type=questions&p=$matches[1]',
'top' );
}
TIA
Essaye ça :
function change_post_type_link( $link, $post = 0 ){
if ( $post->post_type == 'questions' ){
return home_url( 'questions/'. $post->post_name .'/'. $post->ID );
} else {
return $link;
}
}
add_action( 'init', 'change_rewrites_init' );
function change_rewrites_init(){
add_rewrite_rule(
'questions/([a-z-]+)/([0-9]+)?$',
'index.php?post_type=questions&p=$matches[1]&postid=$matches[2]',
'top' );
}
Ici, slug post est attaché après questions
dans l'URL. Par exemple questions/q-slug/45
. La règle de réécriture est modifiée en conséquence.