web-dev-qa-db-fra.com

WP Multisite: Ajout de pages sur la création de blog par défaut

J'aimerais ajouter une page par défaut lorsqu'un nouveau site est créé avec WP Multisite.

J'ai donc ma fonction qui crée deux pages:

function my_default_pages() {
    $default_pages = array('Impress', 'Contact');
    $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 );
    }
}

Et j’ai découvert que je devais me connecter à l’action wpmu_new_blog[1] qui se déclenche lors de la création d’un nouveau site.

add_action('wpmu_new_blog', 'my_default_pages');

Mais je ne sais pas comment faire en sorte que les deux travaillent ensemble…

4
user1706680

Le problème n’est pas le problème: votre code s’exécute dans le contexte du site actuel, pas dans celui qui vient d’être créé! Le code suivant n'est pas testé, mais il devrait au moins mettre en évidence le problème:

function wpse_71863_default_pages( $blog_id )
{
    $default_pages = array(
        'Impress',
        'Contact',
    );

    switch_to_blog( $blog_id );

    if ( $current_pages = get_pages() )
        $default_pages = array_diff( $default_pages, wp_list_pluck( $current_pages, 'post_title' ) );

    foreach ( $default_pages as $page_title ) {        
        $data = array(
            'post_title'   => $page_title,
            'post_content' => "This is my $page_title page.",
            'post_status'  => 'publish',
            'post_type'    => 'page',
        );

        wp_insert_post( add_magic_quotes( $data ) );
    }

    restore_current_blog();
}

add_action( 'wpmu_new_blog', 'wpse_71863_default_pages' );
8
TheDeadMedic