Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save jordipiella/7198fec980a9f3dda68765d9c4818da2 to your computer and use it in GitHub Desktop.
Save jordipiella/7198fec980a9f3dda68765d9c4818da2 to your computer and use it in GitHub Desktop.
WordPress Fake Page Generator - Use in Theme/Plugin to create non-existant pages dynamically
// create fake page called "chat-room"
// modify function and variable names with "ABCD" to whatever you like
// modify variable $fakepage_ABCD_url to the fake URL you require
add_filter('the_posts','fakepage_ABCD_detect',-10);
function fakepage_ABCD_detect($posts){
global $wp;
global $wp_query;
global $fakepage_ABCD_detect; // used to stop double loading
$fakepage_ABCD_url = "chat-room"; // URL of the fake page
if ( !$fakepage_ABCD_detect && (strtolower($wp->request) == $fakepage_ABCD_url || $wp->query_vars['page_id'] == $fakepage_ABCD_url) ) {
// stop interferring with other $posts arrays on this page (only works if the sidebar is rendered *after* the main page)
$fakepage_ABCD_detect = true;
// create a fake virtual page
$post = new stdClass;
$post->post_author = 1;
$post->post_name = $fakepage_ABCD_url;
$post->guid = get_bloginfo('wpurl') . '/' . $fakepage_ABCD_url;
$post->post_title = "Page Title";
$post->post_content = fakepage_chat_render();
$post->ID = -999;
$post->post_type = 'page';
$post->post_status = 'static';
$post->comment_status = 'closed';
$post->ping_status = 'open';
$post->comment_count = 0;
$post->post_date = current_time('mysql');
$post->post_date_gmt = current_time('mysql', 1);
$posts=NULL;
$posts[]=$post;
// make wpQuery believe this is a real page too
$wp_query->is_page = true;
$wp_query->is_singular = true;
$wp_query->is_home = false;
$wp_query->is_archive = false;
$wp_query->is_category = false;
unset($wp_query->query["error"]);
$wp_query->query_vars["error"]="";
$wp_query->is_404=false;
}
return $posts;
}
function fakepage_ABCD_render(){
return "My amazing pretend page :D";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment