Adicionar regra de rewrite a estrutura de permalink

Eu tenho uma configuração de estrutura personalizada para posts em Configurações> Permalinks como:

/%category%/%post_id%-%postname%

Isso funciona muito bem para a maioria das minhas postagens, mas existe uma categoria na qual eu quero remover o post_id, por isso parece assim:

/%category%/%postname%

Então, se a categoria for MOUSE e o post-id for 123 e postname (slug) for my-great-mouse-post, então o permalink corretamente parece assim:

mydomain.com/mouse/123-my-great-mouse-post

Mas se a categoria é DOG, não quero o post-id, então deve ficar assim:

mydomain.com/dog/my-great-dog-post

Eu entendo como usar ações e filtros em minhas funções.php e em um plugin e acho que quero usar add_rewrite_rule, mas estou honestamente confuso como escrever a regra porque o regex é complicado e eu não entendo isso.

Solutions Collecting From Web of "Adicionar regra de rewrite a estrutura de permalink"

1. Adicione uma nova regra de reescrita:

 add_action('init', function() { add_rewrite_rule('^dog/([^/]+)/?$', 'index.php?cat=dog&name=$matches[1]', 'top'); }, 10, 0); 

2. Filtre o link do post:

 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); 

Experimente em suas functions.php . Espero que funcione para você!