web-dev-qa-db-ja.com

新しいブログを作成するたびにデフォルトのページを作成するように設定できますか

"about"のようなページは、新しいブログが作成されると自動的に作成されます。同様に、私のマルチサイトの下にブログが作成されたときに自動的に表示される他のページが必要です。

マルチサイトの下で新しいブログで作成されるデフォルトページをどのように設定できますか?

例:私がexample.comにマルチサイトを持っているならば。このサイトの下に作成されたすべてのブログには、Home、About、My store、My addressがあります。

6
user391

アクションフックactivate_blogに結びつく関数をあなたのfunctions.phpファイルの中に作成することを勧めます。 WordPressの関数 get_pages() を使用して、デフォルトのページが存在するかどうかを確認してください。そうでない場合は、 wp_insert_post を付けて作成してください。

add_action('activate_blog','my_default_pages');

function my_default_pages(){
    $default_pages = array('About','Home','My Store','My Address');
    $existing_pages = get_pages();

    foreach($existing_pages as $page){
        $temp[] = $page->post_title;
        }


    $pages_to_create = array_diff($default_pages,$temp);

    foreach($pages_to_create as $new_page_title){

            // Create post object
            $my_post = array();
            $my_post['post_title'] = $new_page_title;
            $my_post['post_content'] = 'This is my '.$new_page_title.' page.';
            $my_post['post_status'] = 'publish';
            $my_post['post_type'] = 'page';



            // Insert the post into the database
            $result = wp_insert_post( $my_post );

        }
        }

あなた自身のサイトでこの機能をテストするには、フックをwp_headに設定してみてください。 $ my_post ['post_content']の内容で、ページがロードされるたびに実行され、存在しないページを挿入します。 * 'activate_blog'フックは、ブログがマルチサイトコンテキストで作成されたときに実行されますか?知りません。*

使用可能なデフォルトのパラメーターの完全なリストについては、リンク先のwp_insert_postのコーデックスページを参照してください。

12
kevtrout

"activate_blog"の代わりに "wpmu_activate_blog"を使用してください。それは私のために働きました。ありがとう

2
user2325