Hard Code Pages into a Theme for a Network (multisite) Installation

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

Leave a Comment