I am rewriting the URLs for a custom post type.
// Add rewrite rule
function custom_rewrite_basic() {
add_rewrite_rule(
'^movies/([^/]*)/([^/]*)/?',
'index.php?post_type=movies&movie_id=$matches[1]',
'top'
);
}
add_action('init', 'custom_rewrite_basic');
Full code available in this thread regarding another issue: WordPress - request post by url with custom field value
However the above code only sends me to the archive.php page.
URL example: example.com/movies/157336/ The ID is a custom field, and not the actual post ID.
When I rewrite the URL to index.php?post_type=movies&movie_id=$matches[1]&name=$matches[2]
then wordpress loads the single.php
Yes I have read through https://developer.wordpress.org/themes/basics/template-files/ and https://developer.wordpress.org/themes/basics/template-hierarchy/ however it does not mention anything about what is required to request the single.php or archive.php page.
From trial and error it seems when the GET parameters p
or name
are available, then WordPress loads the single.php, otherwise it loads archive.php
I want wordpress to load the single.php or in this case single-movies.php and not archive.php How can I tell wordpress to do that?