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

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.

Read More

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

Related posts

Leave a Reply

1 comment

  1. 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