web-dev-qa-db-ja.com

ネットワーク(マルチサイト)インストールのテーマへのハードコードページ

私はマルチサイトネットワークを作成しています、そして、私がそれを持つ方法を探しているので、作成される新しいブログは自動的にセットアップされる2、3の標準ページを持ちます。

これらのページの目的は、私が各サイトに表示させたいと思う普遍的な会員資格のオプションやその他の情報を表示することになります。

したがって、たとえば、新しいサイトごとに[参加]ページと[このネットワークについて]ページを作成し、ページとそのカスタムテンプレートを手動で設定する必要はありません。

私はTwentyelevenを私の子供のテーマベースとして使用していて、新しく作成された各サブブログユーザーによって使用されるように特定のテーマをカスタマイズしています。

私はこの質問の一部を推測しています:それはWordpressのテーマにページをハードコードすることは可能ですか?

どうもありがとう。

JW

3
jw60660

wpmu_new_blogにフックしてあなたのページを作成します。

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();
}

あなたはこれをあなたがネットワークで活性化するプラグイン、または必須のプラグインの中に入れることができます、このようにそれらはすべてのテーマで利用可能です。

別の方法はtemplate_redirectフックを使用してあなた自身のテンプレートファイルをインクルードすることです

3
onetrickpony