Skip to content

Instantly share code, notes, and snippets.

@cubehouse
Created October 5, 2012 10:34
  • Star 17 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save cubehouse/3839159 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";
}
@zenerry
Copy link

zenerry commented Aug 17, 2022

Great job, this works like a charm!
Is there any way to call a custom page template and use retrieved API info?

Thanks.

@PBC43
Copy link

PBC43 commented Feb 21, 2023

Amazing ! Many thanks for your job :)

@cubehouse
Copy link
Author

I am amazed this is still relevant 11 years later. Surprised WordPress has had such a robust framework it hasn't needed much change to keep this mostly working.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment