Make WordPress Core


Ignore:
Timestamp:
10/25/2010 08:43:52 PM (14 years ago)
Author:
nacin
Message:

Importer and exporter overhaul, mega props duck.

Exporter overhaul:

  • Add author information to export
  • Greater usage of slug identifiers
  • Don't export auto-drafts, spam comments, or edit lock/last meta keys
  • Inline documentation improvements
  • Remove filtering for now (@todo)
  • Bump WXR version to 1.1, but remain back compat in the importer

Importer overhaul (http://plugins.trac.wordpress.org/changeset/304249):

  • Use an XML parser where available (SimpleXML, XML Parser)
  • Proper import support for navigation menus
  • Many bug fixes, specifically improvements to category and custom taxonomy handling
  • Better author/user mapping

Fixes #5447 #5460 #7400 #7973 #8471 #9237 #10319 #11118 #11144 #11354 #11574 #12685 #13364 #13394 #13453 #13454 #13627 #14306 #14442 #14524 #14750 #15055 #15091 #15108.

See #15197.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/export.php

    r15830 r15961  
    2626
    2727if ( isset( $_GET['download'] ) ) {
    28         $author = isset($_GET['author']) ? $_GET['author'] : 'all';
    29         $taxonomy = array();
    30         foreach ( get_taxonomies( array( 'show_ui' => true ) ) as $tax )
    31             $taxonomy[ $tax ] = ! empty( $_GET['export_taxonomy'][ $tax ] ) ? $_GET['export_taxonomy'][ $tax ] : 'all';
    32         $post_type = isset($_GET['export_post_type']) ? stripslashes_deep($_GET['export_post_type']) : 'all';
    33         $status = isset($_GET['export_post_status']) ? stripslashes_deep($_GET['export_post_status']) : 'all';
    34         $mm_start = isset($_GET['mm_start']) ? $_GET['mm_start'] : 'all';
    35         $mm_end = isset($_GET['mm_end']) ? $_GET['mm_end'] : 'all';
    36         if( $mm_start != 'all' ) {
    37             $start_date = sprintf( "%04d-%02d-%02d", substr( $mm_start, 0, 4 ), substr( $mm_start, 5, 2 ), 1 );
    38         } else {
    39             $start_date = 'all';
    40         }
    41         if( $mm_end != 'all' ) {
    42             $end_date = sprintf( "%04d-%02d-%02d", substr( $mm_end, 0, 4 ), substr( $mm_end, 5, 2 ), 1 );
    43         } else {
    44             $end_date = 'all';
    45         }
    46 
    47     export_wp( array( 'author' => $author, 'taxonomy' => $taxonomy, 'post_type' => $post_type, 'post_status' => $status, 'start_date' => $start_date, 'end_date' => $end_date ) );
     28    export_wp();
    4829    die();
    4930}
     
    7354<p><?php _e('Once you&#8217;ve saved the download file, you can use the Import function on another WordPress site to import this site.'); ?></p>
    7455<form action="" method="get">
    75 <h3><?php _e('Filters'); ?></h3>
    76 
    77 <table class="form-table">
    78 <tr>
    79 <th><label for="mm_start"><?php _e('Start Date'); ?></label></th>
    80 <td>
    81 <select name="mm_start" id="mm_start">
    82     <option value="all" selected="selected"><?php _e('All Dates'); ?></option>
    83 <?php echo $dateoptions; ?>
    84 </select>
    85 </td>
    86 </tr>
    87 <tr>
    88 <th><label for="mm_end" id="mm_end"><?php _e('End Date'); ?></label></th>
    89 <td>
    90 <select name="mm_end" id="mm_end">
    91     <option value="all" selected="selected"><?php _e('All Dates'); ?></option>
    92 <?php echo $edateoptions; ?>
    93 </select>
    94 </td>
    95 </tr>
    96 <tr>
    97 <th><label for="author"><?php _e('Authors'); ?></label></th>
    98 <td>
    99 <select name="author" id="author">
    100 <option value="all" selected="selected"><?php _e('All Authors'); ?></option>
    101 <?php
    102 $authors = $wpdb->get_results( "SELECT DISTINCT u.id, u.display_name FROM $wpdb->users u INNER JOIN $wpdb->posts p WHERE u.id = p.post_author ORDER BY u.display_name" );
    103 foreach ( (array) $authors as $author ) {
    104     echo "<option value='{$author->id}'>{$author->display_name}</option>\n";
    105 }
    106 ?>
    107 </select>
    108 </td>
    109 </tr>
    110 <?php foreach ( get_taxonomies( array( 'show_ui' => true ), 'objects' ) as $tax_obj ) {
    111     $term_dropdown = wp_dropdown_categories( array( 'taxonomy' => $tax_obj->name, 'hide_if_empty' => true, 'show_option_all' => __( 'All Terms' ), 'name' => 'export_taxonomy[' . $tax_obj->name . ']', 'id' => 'taxonomy-' . $tax_obj->name, 'class' => '', 'echo' => false ) );
    112     if ( $term_dropdown )
    113         echo '<tr><th><label for="taxonomy-' . $tax_obj->name . '">' . $tax_obj->labels->name . '</label></th><td>' . $term_dropdown . '</td></tr>';
    114 }
    115 ?>
    116 <tr>
    117 <th><label for="post_type"><?php _e('Content Types'); ?></label></th>
    118 <td>
    119 <select name="export_post_type" id="post_type">
    120     <option value="all" selected="selected"><?php _e('All Content'); ?></option>
    121     <?php foreach ( get_post_types( array( 'public' => true, 'can_export' => true ), 'objects' ) as $post_type_obj ) { ?>
    122         <option value="<?php echo $post_type_obj->name; ?>"><?php echo $post_type_obj->labels->name; ?></option>
    123     <?php } ?>
    124 </select>
    125 </td>
    126 </tr>
    127 <tr>
    128 <th><label for="status"><?php _e('Statuses'); ?></label></th>
    129 <td>
    130 <select name="export_post_status" id="status">
    131     <option value="all" selected="selected"><?php _e('All Statuses'); ?></option>
    132 <?php foreach ( get_post_stati( array( 'internal' => false ), 'objects' ) as $post_status_obj ) { ?>
    133     <option value="<?php echo $post_status_obj->name; ?>"><?php echo $post_status_obj->label; ?></option>
    134 <?php } ?>
    135 </select>
    136 </td>
    137 </tr>
    138 </table>
    13956<?php submit_button( __('Download Export File'), 'secondary' ); ?>
    14057<input type="hidden" name="download" value="true" />
Note: See TracChangeset for help on using the changeset viewer.