It looks like your add_rewrite_rule function
is not quite correct. The first parameter should be the regular expression pattern that you want to match, and the second parameter should be the query string that you want to rewrite the URL to. Also, you don’t need to include the file extension in the URL.
Try updating your custom_rewrite_rule
function to this:
function custom_rewrite_rule() {
add_rewrite_rule('^episode/([^/]*)/([^/]*)/?$','index.php?page_id=PAGE_ID&ep_year=$matches[1]&ep_name=$matches[2]','top');
}
add_action('init', 'custom_rewrite_rule');
Replace PAGE_ID
with the ID of the page that displays the custom template for your /episode/
URL. You can find the page ID by editing the page in WordPress and looking at the URL in your browser’s address bar – it will be something like post.php?post=PAGE_ID&action=edit
.
This rule will match a URL like http://ngofwp.local/episode/2011/silly_donkey/
and rewrite it to http://ngofwp.local/index.php?page_id=PAGE_ID&ep_year=2011&ep_name=silly_donkey.
After updating the functions.php
file, you’ll need to go to the WordPress dashboard Settings > Permalinks
and click the “Save Changes” button to flush the rewrite rules cache and make your new rule active.