Latest Post

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.

Tagged with