Les articles du site Web sur lequel je travaille actuellement ont plusieurs catégories hiérarchiques appliquées à chacune d’elles. Par exemple:
Source
- Books
-- Moby Dick
-- Sherlock Holmes
Les permaliens sont définis comme /%category%/%postname%/
. Cependant, l'URL d'une publication n'inclut pas toutes les sous-catégories - tout ce que je reçois est site.com/source/books/*postname*
, même si la publication en question N'A PAS été une catégorie dans Source, mais uniquement dans Books + Moby Dick.
Quelqu'un pourrait-il m'aider à comprendre comment ajuster ce comportement?
Je vous remercie.
Le nom_de_propriété /%category%/%postname%/
comprendra les catégories et sous-catégories de l'URL du premier au premier enfant assigné . Donc, si vous voulez que l'URL soit site.com/source/books/moby-dick/*postname*
, vous devez attribuer la publication uniquement à "Moby Dick". Attribuer le message uniquement à la catégorie "Moby Dick" affichera toujours le message sous les archives de la catégorie "source" et "livres" par défaut.
Ici, vous avez une solution complète, même si vous avez plusieurs catégories assignées à votre message:
function permalink_full_categories( $cat, $cats, $post ) {
$ordering = array();
foreach( $cats as $index => $this_cat) {
$ordering[$this_cat->parent] = $index;
}
$ordered = array();
$i = 0;
while( $ordering[$i] !== null ){
array_Push( $ordered, $cats[$ordering[$i]] );
$i = $cats[$ordering[$i]]->term_id;
}
return end($cats);
}
add_filter( 'post_link_category', 'permalink_full_categories', 20, 3 );
Il filtre la catégorie permalien en modifiant son comportement par défaut, en renvoyant la dernière catégorie de la hiérarchie.
Par conséquent, le noyau Wordpress écrit l’URL de la catégorie de hiérarchie complète.