示例#1
0
文件: export.php 项目: nb/wp-cli
 /**
  * Export content to a WXR file.
  *
  * ## OPTIONS
  *
  * [--dir=<dirname>]
  * : Full path to directory where WXR export files should be stored. Defaults
  * to current working directory.
  *
  * [--skip_comments]
  * : Don't export comments.
  *
  * [--max_file_size=<MB>]
  * : A single export file should have this many megabytes.
  *
  * ## FILTERS
  *
  * [--start_date=<date>]
  * : Export only posts newer than this date, in format YYYY-MM-DD.
  *
  * [--end_date=<date>]
  * : Export only posts older than this date, in format YYYY-MM-DD.
  *
  * [--post_type=<post-type>]
  * : Export only posts with this post_type.
  *
  * [--post__in=<pid>]
  * : Export all posts specified as a comma-separated list of IDs.
  *
  * [--author=<author>]
  * : Export only posts by this author. Can be either user login or user ID.
  *
  * [--category=<name>]
  * : Export only posts in this category.
  *
  * [--post_status=<status>]
  * : Export only posts with this status.
  *
  * ## EXAMPLES
  *
  *     wp export --dir=/tmp/ --user=admin --post_type=post --start_date=2011-01-01 --end_date=2011-12-31
  *
  *     wp export --dir=/tmp/ --post__in=123,124,125
  */
 public function __invoke($_, $assoc_args)
 {
     $defaults = array('dir' => NULL, 'start_date' => NULL, 'end_date' => NULL, 'post_type' => NULL, 'author' => NULL, 'category' => NULL, 'post_status' => NULL, 'post__in' => NULL, 'skip_comments' => NULL, 'max_file_size' => 15);
     $this->validate_args(wp_parse_args($assoc_args, $defaults));
     if (!function_exists('wp_export')) {
         self::load_export_api();
     }
     WP_CLI::log('Starting export process...');
     add_action('wp_export_new_file', function ($file_path) {
         WP_CLI::log(sprintf("Writing to file %s", $file_path));
     });
     wp_export(array('filters' => $this->export_args, 'writer' => 'WP_Export_Split_Files_Writer', 'writer_args' => array('max_file_size' => $this->max_file_size * MB_IN_BYTES, 'destination_directory' => $this->wxr_path, 'filename_template' => self::get_filename_template())));
     WP_CLI::success('All done with export.');
 }
	function test_wp_export_passes_the_exception_if_the_writer_throws_other_exception() {
		$this->setExpectedException( 'Exception' );
		wp_export( array( 'writer' => 'Test_WP_Export_Stub_Writer_Throws_Other_Exception' ) );
	}
示例#3
0
 /**
  * Export content to a WXR file.
  *
  * ## OPTIONS
  *
  * [--dir=<dirname>]
  * : Full path to directory where WXR export files should be stored. Defaults
  * to current working directory.
  *
  * [--skip_comments]
  * : Don't export comments.
  *
  * [--max_file_size=<MB>]
  * : A single export file should have this many megabytes.
  * ---
  * default: 15
  * ---
  *
  * ## FILTERS
  *
  * [--start_date=<date>]
  * : Export only posts published after this date, in format YYYY-MM-DD.
  *
  * [--end_date=<date>]
  * : Export only posts published before this date, in format YYYY-MM-DD.
  *
  * [--post_type=<post-type>]
  * : Export only posts with this post_type. Separate multiple post types with a
  * comma.
  * ---
  * default: any
  * ---
  *
  * [--post_type__not_in=<post-type>]
  * : Export all post types except those identified. Separate multiple post types
  * with a comma. Defaults to none.
  *
  * [--post__in=<pid>]
  * : Export all posts specified as a comma- or space-separated list of IDs.
  *
  * [--start_id=<pid>]
  * : Export only posts with IDs greater than or equal to this post ID.
  *
  * [--author=<author>]
  * : Export only posts by this author. Can be either user login or user ID.
  *
  * [--category=<name>]
  * : Export only posts in this category.
  *
  * [--post_status=<status>]
  * : Export only posts with this status.
  *
  * [--filename_format=<format>]
  * : Use a custom format for export filenames. Defaults to '{site}.wordpress.{date}.{n}.xml'.
  *
  * ## EXAMPLES
  *
  *     # Export posts published by the user between given start and end date
  *     $ wp export --dir=/tmp/ --user=admin --post_type=post --start_date=2011-01-01 --end_date=2011-12-31
  *     Starting export process...
  *     Writing to file /tmp/staging.wordpress.2016-05-24.000.xml
  *     Success: All done with export.
  *
  *     # Export posts by IDs
  *     $ wp export --dir=/tmp/ --post__in=123,124,125
  *     Starting export process...
  *     Writing to file /tmp/staging.wordpress.2016-05-24.000.xml
  *     Success: All done with export.
  *
  *     # Export a random subset of content
  *     $ wp export --post__in="$(wp post list --post_type=post --orderby=rand --posts_per_page=8 --format=ids)"
  *     Starting export process...
  *     Writing to file /var/www/example.com/public_html/staging.wordpress.2016-05-24.000.xml
  *     Success: All done with export.
  */
 public function __invoke($_, $assoc_args)
 {
     $defaults = array('dir' => NULL, 'start_date' => NULL, 'end_date' => NULL, 'post_type' => NULL, 'post_type__not_in' => NULL, 'author' => NULL, 'category' => NULL, 'post_status' => NULL, 'post__in' => NULL, 'start_id' => NULL, 'skip_comments' => NULL, 'max_file_size' => 15, 'filename_format' => '{site}.wordpress.{date}.{n}.xml');
     $assoc_args = wp_parse_args($assoc_args, $defaults);
     $this->validate_args($assoc_args);
     if (!function_exists('wp_export')) {
         self::load_export_api();
     }
     WP_CLI::log('Starting export process...');
     add_action('wp_export_new_file', function ($file_path) {
         WP_CLI::log(sprintf("Writing to file %s", $file_path));
         WP_CLI\Utils\wp_clear_object_cache();
     });
     try {
         wp_export(array('filters' => $this->export_args, 'writer' => 'WP_Export_Split_Files_Writer', 'writer_args' => array('max_file_size' => $this->max_file_size * MB_IN_BYTES, 'destination_directory' => $this->wxr_path, 'filename_template' => self::get_filename_template($assoc_args['filename_format']))));
     } catch (Exception $e) {
         WP_CLI::error($e->getMessage());
     }
     WP_CLI::success('All done with export.');
 }