有没有办法以编程方式在wordpress中导入wordpress页面?

时间:2016-10-08 19:03:09

标签: php wordpress wordpress-theming

我正在尝试在我的wordpress插件中创建此功能。假设我有一定数量的页面永远不会改变,我想自动将它们导入到我设置的每个wordpress网站,而不必手动转到第一个站点,导出包含页面的xml文件,然后将其导入新的现场。有什么想法吗?

由于

3 个答案:

答案 0 :(得分:1)

如果您知道如何遍历XML文件并且可以在其他站点上访问XML文件,则可以循环使用以下代码: -

// 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 );

您需要在安装插件时启动此代码。

答案 1 :(得分:0)

  1. 您可以通过默认Wordpress export tool导出页面。这将导致.xml(WXR)文件。
  2. 之后,您可以通过WP-CLI工具在每个网站上导入网页,并使用以下command

    $ wp import file-name.xml

  3. WXR 代表WordPress扩展RSS。

答案 2 :(得分:0)

您可以将页面存储在一个数组中,然后在激活插件时自动插入它们。我建议为每个页面存储一个meta_key,让你知道它已经被插入,这样你就不会在每次激活和停用插件时都创建它们。您可以将它放在插件的主文件中。一定要用实际的页面名称替换带编号的页面和slugs,并用插件的命名空间替换“my_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' );
   ?>