J'essaie de créer un permalien personnalisé dans wordpress pour mon type de message personnalisé artikelen
(slug exacte). J'ai trouvé du code en ligne et il semble que le travail consiste à transformer les liens avec une structure personnalisée %postname%/%postid%
, mais lorsque je sauvegarde mes permaliens et que je vais à une page de détail, une erreur 404 s'affiche.
Je poste mon code pour démontrer ma façon de travailler.
add_filter('post_type_link', 'wpse33551_post_type_link', 1, 3);
function wpse33551_post_type_link( $link, $post = 0 ){
if ( $post->post_type == 'artikelen' ){
return home_url( $post->post_name .'/'. $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=artikelen&p=$matches[1]',
'top' );
}
product/([0-9]+)?$
se traduit parproduct/
suivi d'un nombre ou de rien (et de rien d'autre, pas même d'une barre oblique). Cela ne ressemble pas à ce que vous voulez réaliser.
Au lieu de cela, essayez ce qui suit
function wpse33551_rewrites_init(){
add_rewrite_rule(
'^([^/]+)/([0-9]+)/?$',
'index.php?post_type=artikelen&p=$matches[2]',
'top'
);
}
qui se traduit par :
^
début de la chaîne (c.-à-d. qu'il n'y a rien d'autre devant)([^/]+)
: au moins un caractère qui n'est pas /
/
: une barre oblique([0-9]+)
: au moins un numéro/?
: zéro ou un (fin) barre oblique$
: fin de la chaîne