I’m creating a multisite network and I am looking for a way to have it so new blogs that are created have a couple of standard pages set up automatically.
The purpose of these pages will be to display universal membership options and other info that I want each site to display.
So, for example, I want each new site to have a “Join” page and an “About this Network” page, and I don’t want to have to manually set up the pages and their custom templates.
I’m using Twentyeleven as my child theme base and customizing a specific theme to be used by each of the newly created sub blogs users.
I guess a part of this question is: is it possible to hardcode pages into a WordPress theme?
Thanks very much.
JW
Hook into wpmu_new_blog
and create your pages:
add_action('wpmu_new_blog', 'create_my_pages', 10, 2);
function create_my_pages($blog_id, $user_id){
switch_to_blog($blog_id);
// not really need, new blogs shouldn't have any content
if(get_page_by_title('About this Network')) return;
// create each page
$page_id = wp_insert_post(array(
'post_title' => 'About this Network',
'post_name' => 'about-this-network',
'post_content' => 'Co za asy...',
'post_status' => 'publish',
'post_author' => $user_id, // or "1" (super-admin?)
'post_type' => 'page',
'menu_order' => 666,
'comment_status' => 'closed',
'ping_status' => 'closed',
// + see: http://codex.wordpress.org/Function_Reference/wp_insert_post
));
restore_current_blog();
}
You could put this inside a plugin that you network activate, or a must-use plugin, this way they are available in all themes.
Another way is to use template_redirect
hook and include your own template files