-
-
Save hiphopsmurf/84335f2f431e41e42f93 to your computer and use it in GitHub Desktop.
WordPress Fake Page Generator - Use in Theme/Plugin to create non-existant pages dynamically
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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