X

Comment créer une page lorsque le thème est activé

Snippets by IsItWP

Vous cherchez un moyen de créer automatiquement une nouvelle page lors de l’activation du thème ? Bien qu’il existe probablement un plugin pour cela, nous avons créé un extrait de code rapide que vous pouvez utiliser pour créer une nouvelle page dans WordPress.

Si vous souhaitez que votre thème ou votre plugin crée une nouvelle page (ou deux ou trois) de lui-même, voici un petit bout de code pour le faire. wp_insert_post renvoie l’ID de la page nouvellement créée. En cas d’erreur, il retournera 0 si $wp_error est à false, ou un objet WP_Error si $wp_error est à true.

Instructions:

Tout ce que vous avez à faire est d’ajouter ce code dans le fichier index.php de votre thème, au-dessus du crochet.

Et bien sûr, ce code peut être utilisé pour créer un POST ou tout autre contenu de type Custom Post Type en changeant simplement la valeur de post_type.

<?php
$new_page = array(
	'slug' => 'this-is-my-new-page',
	'title' => 'Write a Headline that Captivates',
	'content' => "Enter the body Content for your Page here"
);
$new_page_id = wp_insert_post( array(
	'post_title' => $new_page['title'],
	'post_type' 	=> 'page',
	'post_name'	 => $new_page['slug'],
	'comment_status' => 'closed',
	'ping_status' => 'closed',
	'post_content' => $new_page['content'],
	'post_status' => 'publish',
	'post_author' => 1,
	'menu_order' => 0
));
?>

Vous pouvez également utiliser ce code à la place. Ce snippet vérifie si une page portant le titre de la ligne 3 existe déjà, et crée la page si elle n’existe pas encore. Il définit également un modèle de page si un modèle de page est indiqué à la ligne 5.

Tout ce que vous avez à faire est d’ajouter ce code au fichier functions.php de votre thème ou dans un plugin spécifique à votre site:

if (isset($_GET['activated']) && is_admin()){
 
    $new_page_title = 'This is the page title';
    $new_page_content = 'This is the page content';
    $new_page_template = ''; //ex. template-custom.php. Leave blank if you don't want a custom page template.
 
    //don't change the code bellow, unless you know what you're doing
 
    $page_check = get_page_by_title($new_page_title);
    $new_page = array(
        'post_type' => 'page',
        'post_title' => $new_page_title,
        'post_content' => $new_page_content,
        'post_status' => 'publish',
        'post_author' => 1,
    );
    if(!isset($page_check->ID)){
        $new_page_id = wp_insert_post($new_page);
        if(!empty($new_page_template)){
            update_post_meta($new_page_id, '_wp_page_template', $new_page_template);
        }
    }
 
}

Note : Si c’est la première fois que vous ajoutez des extraits de code dans WordPress, veuillez consulter notre guide sur la façon d’ajouter correctement des extraits de code dans WordPress, afin de ne pas casser accidentellement votre site.

Si vous avez aimé cet extrait de code, n’hésitez pas à consulter nos autres articles sur le site comme : 27 meilleurs thèmes WordPress pour les blogs de voyage et comment sécuriser vos formulaires WordPress.

Commentaires   laisser une réponse

  1. Suman Samanta mars 3, 2019 à 5:37 am

    If I had to give a prime example of great quality content, this article would be one. It’s well-written material that keeps your interest well.

  2. Thanks. I exactly need this. Let me know with which hook, This code should be hooked?

  3. Thanks man! U have solution for insert auto taxonomies?

  4. Hi in my plugin automatic page generated and short code also automatic generated. i want in detail page no need to display header footer and sidebar.. any idea please ?

  5. Hi Kevin. How to create multiple pages with this method?Thankss..

  6. I don’t suppose there’s a way of directing users to the page after activation is there no matter what permalnk they have set is?

    I wanted to use this to create a theme FAQ page and direct the user to it after activation.

    1. I’m don’t think that is the best way to do things what you could do is create an admin page much like people do when they create a plugin and add your FAQ or other details in that. This tutorial on net.tuts has details about creating the admin panel for a plugin but the idea is the same.

      http://net.tutsplus.com/tutorials/wordpress/creating-a-custom-wordpress-plugin-from-scratch/

      1. Yeah You’re probably right. I’m using a child theme for Twenty Eleven and haven’t figure out how to hook into the current theme options yet. I’ll probably just create a html page with the info I need on it and link it but will check that link out, thanks

        1. Hi Zeaks,

          The tutorial I posted should work fine! Should not matter the theme
          you are using, the code in the tutorial will just have you add code to
          your functions.php to create the admin panel then it is just html to
          style and display your faq or other information.

    2. I’m don’t think that is the best way to do things what you could do is create an admin page much like people do when they create a plugin and add your FAQ or other details in that. This tutorial on net.tuts has details about creating the admin panel for a plugin but the idea is the same.

      http://net.tutsplus.com/tutorials/wordpress/creating-a-custom-wordpress-plugin-from-scratch/

  7. Nice! Big thanks!
    Just used your code to add menu items as well.
    (‘post_type’ => ‘nav-menu-item’)

    1. Hi Tyson, Cool glad I could help. Don’t forget to follow on twitter, facebook or RSS I post new snippets regularly.

  8. Sorry if a dumb question, but why would you want to do this?
    I have a test WP installation where I manually create a new post (or sometimes a page) whenever I activate a new plugin – to test out what it can do. I can see the benefit of a page/post generator for that action, but I’m not sure why a new page for activating a theme. Please help me understand. Thanks!

    1. No such thing as a dumb question on wpsnipp, this is a good question. Lets say that I have a new theme that will function more like a CMS with a default static front page. You could use this in your theme to create the needed pages for the person rather then asking them to do it by hand. This way I could create any number of pages needed for a theme I was creating then all the person would need to do is link pages to templates required. But this is just one example could be reasons we can’t even think of.

      1. How I add this new page created by your code in main menu. (‘post_type’ => ‘nav-menu-item’) not working for me

    2. This is kind of old, but for me I am making a theme and setting up a custom page that will make a site map, and I want to link to that sitemap in the footer.

      This is a great bit of code, it lets me know for sure that this sitemap page will be there all the site.

  9. Tweets that mention Wordpress Create page on theme activation – wpsnipp.com Wordpress code snippets for your blog -- Topsy.com novembre 24, 2010 à 4:32 pm

    […] This post was mentioned on Twitter by wp_freak, WPSNIPP. WPSNIPP said: #wordpress Create page on theme activation http://bit.ly/gTZHVl #blog please RT 🙂 […]

Ajouter un commentaire

Nous sommes heureux que vous ayez choisi de laisser un commentaire. N'oubliez pas que tous les commentaires sont modérés conformément à notre privacy policy, et que tous les liens sont en nofollow. N'utilisez PAS de mots-clés dans le champ du nom. Engageons une conversation personnelle et constructive.

WordPress Launch Checklist

L'ultime liste de contrôle pour le lancement de WordPress

Nous avons rassemblé tous les éléments essentiels de la liste de contrôle pour le lancement de votre prochain site Web WordPress dans un ebook pratique.
Oui, envoyez-moi le gratuit !