/** * 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' ) ); }
/** * 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.'); }