How to change the url of the archive page to be inside the custom post type

The has_archive parameter for registering the post type should work (untested): register_post_type( ‘news’, array( … ‘has_archive’ => ‘news/all-news’, ‘rewrite’ => array( ‘slug’ => ‘news’, ‘with_front’ => false, ), ) ); Remember to flush the permalinks by going to Settings > Permalinks and clicking Save button.

How to write ReWrite Rule to cut URL?

First add the rewrite rule: function wpse426504_add_rewrite() { add_rewrite_rule( ‘mycontent/events/([a-z0-9-]+)[/]?$’, ‘index.php?eventslug=$matches[1]’, ‘top’ ); } add_action( ‘init’, ‘wpse426504_add_rewrite’ ); function wpse426504_add_query_var( $query_vars ) { $query_vars[] = ‘eventslug’; return $query_vars; } ); add_filter( ‘query_vars’, ‘wpse426504_add_query_var’ ); That’s the basics of it. If you need to add a new template to handle displaying everything, you’d then hook to … Read more

`query_var` values empty in theme file after `add_rewrite_rule` redirection

Changing the add_rewrite_rule did the trick: add_rewrite_rule(‘^periodicals/([^/]+)-‘.$tlv[‘code’].'[/]?$’, ‘index.php?periodicals=$matches[1]&post_type=periodicals&name=$matches[1]&mlang=’.$tlv[‘code’], ‘top’); So, I assume for custom post types, using add_rewrite_rule with index.php as query need some extra query variables. A sample will be as: add_rewrite_rule(‘^<custom_post_type>/([^/]+)-‘.$tlv[‘code’].'[/]?$’, ‘index.php?<custom_post_type>=$matches[1]&post_type=<custom_post_type>&name=$matches[1]&mlang=’.$tlv[‘code’], ‘top’);

How to customize the url structure?

The problem is your slug parameter, it can’t just be / – you need to have something that identifies the URL as being this taxonomy. It defaults to the taxonomy key which in this case would be course_cat but in the interest of human-readable URLS you could do this instead: ‘rewrite’ => array( ‘slug’ => … Read more