web-dev-qa-db-fra.com

Puis-je définir des pages par défaut à créer à chaque création d'un nouveau blog

Les pages du type "à propos de" seront créées automatiquement lors de la création d'un nouveau blog. De même, j'ai besoin de quelques autres pages qui devraient apparaître automatiquement lorsqu'un blog est créé sous mes sites multiples.

Comment puis-je configurer les pages par défaut pour qu'elles soient créées avec un nouveau blog sous un multisite?

Par exemple: Si j'ai un multisite sur example.com. Chaque blog créé sur ce site devrait avoir Accueil, À propos de, Mon magasin, Mon adresse.

6
user391

Je vous recommande de créer une fonction dans votre fichier functions.php qui soit liée à l'action hook activate_blog. Utilisez les fonctions WordPress get_pages () pour voir si vos pages par défaut existent. Si ce n'est pas le cas, créez-les avec 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 );

        }
        }

Pour tester cette fonction sur votre propre site, essayez de définir le hook sur wp_head. Il fonctionnera à chaque chargement de page et insérera les pages qui n'existent pas, avec le contenu dans $ my_post ['post_content']. * Le hook "activate_blog" est-il exécuté lorsque des blogs sont créés dans un contexte multi-site? Je ne sais pas.*

Reportez-vous à la page de codex pour wp_insert_post que j'ai liée à la liste complète des paramètres par défaut disponibles.

12
kevtrout

utilisez "wpmu_activate_blog" au lieu de "activate_blog". cela a fonctionné pour moi. Merci

2
user2325