Добавление двух правил перезаписи

У меня есть пользовательский тип сообщения с пользовательской таксономией.

Тип персонализированного сообщения – новость.

Таможенная таксономия – новая_категория.

Я хочу, чтобы две управляющие ссылки:

http://example.com/news/ -> show news archive http://example.com/news/movies/ -> show category movie archive http://example.com/batman-returns/ -> show post content called "Batman Returns" 

Я пробовал это, но не работает:

 add_rewrite_rule('^news/([^/]*)/?','index.php?post_type=news&news=$matches[1]','top'); add_rewrite_rule('^news/([^/]*)/?','index.php?post_type=news&news_category=$matches[1]','top'); 

Предложения?

Solutions Collecting From Web of "Добавление двух правил перезаписи"

1. Измените new_category перезаписи new_category при регистрации :

 'rewrite' => ['hierarchical' => false, 'with_front' => false, 'slug' => 'news'] 

Удостоверьтесь, что правило перезаписи типа news – по умолчанию или:

 'rewrite' => ['slug' => false, 'with_front' => false] 

2. Добавьте правила перезаписи для new_category :

 add_action('init', function() { add_rewrite_rule('^news/([^/]+)/?$', 'index.php?new_category=$matches[1]&post_type=news', 'top'); }); 

3. Отфильтровать ссылки типа сообщения news :

 add_filter('post_type_link', function($post_link, $post, $leave_name = false, $sample = false) { if ( 'news' === $post->post_type) { $post_link = str_replace('/news/', '/', $post_link); } return $post_link; }, 10, 4); 

4. Добавьте тип сообщения для запроса vars :

Удаляя news из permalink, WordPress будет запрашивать сообщения из типа post post, и вы получите 404, которые не найдены. Поэтому нам нужно добавить наш тип сообщения для запроса vars.

 add_action('pre_get_posts', function($query) { if ( $query->is_main_query() && ( 2 === count($query->query) ) && isset($query->query['name']) ) { $query->set('post_type', ['post', 'news', 'page']); } }); 

Это все. Сбросьте свою структуру permalink и убедитесь, что она установлена ​​в /%postname%/ .