J'ai une configuration de structure personnalisée pour les publications dans Réglages> Permaliens en tant que:
/%category%/%post_id%-%postname%
Cela fonctionne très bien pour la plupart de mes publications, mais il y a une catégorie pour laquelle je veux supprimer le post_id. Elle ressemble à ceci:
/%category%/%postname%
Donc, si la catégorie est MOUSE et que le post-id est 123 et que postname (slug) est my-great-mouse-post, le permalien se présente comme suit:
mydomain.com/mouse/123-my-great-mouse-post
Mais si la catégorie est DOG, alors je ne veux pas de post-id, il devrait donc ressembler à ceci:
mydomain.com/dog/my-great-dog-post
Je comprends comment utiliser les actions et les filtres dans le fichier functions.php et dans un plugin. Je pense que je veux utiliser add_rewrite_rule, mais je ne comprends vraiment pas comment écrire la règle, car la regex est compliquée et je ne la comprends pas.
add_action('init', function()
{
add_rewrite_rule('^dog/([^/]+)/?$', 'index.php?cat=dog&name=$matches[1]', 'top');
}, 10, 0);
add_filter('post_link', function($post_link, $post, $leave_name = false, $sample = false)
{
if ( is_object_in_term($post->ID, 'category', 'DOG') ) {
$post_link = str_replace($post->ID . '-', '', $post_link);
}
return $post_link;
}, 10, 4);
Essayez-le dans votre functions.php
. J'espère que ça marche pour toi!