Existe-t-il un moyen d’importer par programmation des pages wordpress dans wordpress ?

Publié par Jean-Michel le

J’essaie de créer cette fonctionnalité dans mon plugin wordpress. Disons que j’ai un nombre défini de pages qui ne changeront jamais et que je souhaite les importer automatiquement sur chaque site wordpress que j’ai configuré sans avoir à accéder manuellement au premier site, exporter le fichier xml contenant les pages puis l’importer dans le nouveau placer. Des pensées à ce sujet?

Merci

Solution n°1 trouvée

Vous pouvez stocker les pages dans un tableau, puis les insérer automatiquement lorsque votre plugin est activé. Je vous recommande de stocker une meta_key pour chaque page qui vous permet également de savoir qu’elle a déjà été insérée afin que vous ne les créiez pas à chaque fois que le plugin est activé et désactivé. Vous pouvez le mettre dans le fichier principal de votre plugin. Assurez-vous de remplacer les pages numérotées et les slugs par les noms de page réels et de remplacer « my_plugin » par l’espace de noms de votre plugin.

    <?php
    function create_my_plugin_pages() {
      $pages = array(
        'Page 1' => 'page-1', // Use slugs to create meta-keys
        'Page 2' => 'page-2',
        'Page 3' => 'page-3'
      );

      foreach( $pages as $title => $slug ) {
        $meta_key = 'my-plugin_'.$slug;

        // Check that the page wasn't already created
        $existing = get_posts(array(
          'post_type' => 'page',
          'meta_query' => array(
            array(
              'key' => $meta_key,
              'value' => '1'
            )
          )
        ));

        // Create page if it doesn't exist
        if ( !count($existing) ) {
          $new_page = wp_insert_post(array(
            'post_title' => $title,
            'post_status' => 'publish'
          ));

          add_post_meta($new_page,$meta_key,'1');
        }
      }
    }

    register_activation_hook( __FILE__, 'create_my_plugin_pages' );
   ?>

Solution n°2 trouvée

Si vous savez comment parcourir votre fichier XML et que votre fichier XML est accessible sur l’autre site, vous pouvez parcourir le code suivant :-

// Create post object
$my_post = array(
  'post_title'    => wp_strip_all_tags( $post_title ),
  'post_content'  => $post_content,
  'post_status'   => 'publish',
  'post_author'   => 1,
  'post_category' => $cat
);

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

Vous auriez besoin d’initier ce code lors de l’installation de votre plugin.

Lire également:  Wordpress : WordPress comment remplacer la fonction adjacent_posts_rel_link_wp_head() dans link-template.php de la bonne manière

Solution n°3 trouvée

  1. Vous pouvez exporter vos pages via l’outil d’exportation WordPress par défaut. Cela se traduira par un fichier .xml (WXR).
  2. Après cela, vous pouvez importer les pages via l’outil WP-CLI sur chaque site, avec la commande suivante :

    $ wp import file-name.xml

WXR signifie WordPress eXtended RSS.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *