How to create a virtual page in wordpress
Everytime I have a wordpress project, this feature seems always present and I always had to search it in google LOL. So I decided to write a post about it because there's a bunch of code I found and have tested that aren't working on my end which consumed my time.
I think the code explain itself so just play with it in your functions.php.
//1. add a wp query variable to redirect to add_action('query_vars','set_query_var'); function set_query_var($vars) { array_push($vars, 'custom_page'); // ref url redirected to in add rewrite rule return $vars; } //2. Create a redirect add_action('init', 'custom_add_rewrite_rule'); function custom_add_rewrite_rule(){ add_rewrite_rule('^custom$','index.php?custom_page=1','top'); //flush the rewrite rules, should be in a plugin activation hook, i.e only run once... flush_rewrite_rules(); } //3.return the file we want... add_filter('template_include', 'plugin_include_template'); function plugin_include_template($template){ if(get_query_var('custom_page')){ $template = get_template_directory() ."/templates/custom.php"; } return $template; }
After putting the code above create the file custom.php inside a folder named "templates" in your theme (you may changed it to your liking).
Now visit your page www.example.com/custom and you'll see that it's no longer relying on a wordpress page.
This snippet come from David who gives an answer at stackoverflow.