Changeset 15961
- Timestamp:
- 10/25/2010 08:43:52 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/export.php
r15830 r15961 26 26 27 27 if ( 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(); 48 29 die(); 49 30 } … … 73 54 <p><?php _e('Once you’ve saved the download file, you can use the Import function on another WordPress site to import this site.'); ?></p> 74 55 <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 <?php102 $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>139 56 <?php submit_button( __('Download Export File'), 'secondary' ); ?> 140 57 <input type="hidden" name="download" value="true" /> -
trunk/wp-admin/includes/export.php
r15367 r15961 12 12 * Bump this when something changes that might affect compatibility. 13 13 * 14 * @since unknown 15 * @var string 14 * @since 2.5.0 16 15 */ 17 define( 'WXR_VERSION', '1.0');16 define( 'WXR_VERSION', '1.1' ); 18 17 19 18 /** 20 * {@internal Missing Short Description}}21 * 22 * @since unknown23 * 24 * @param unknown_type $args19 * Generates the WXR export file for download 20 * 21 * @since 2.1.0 22 * 23 * @param array $args Filters defining what should be included in the export 25 24 */ 26 25 function export_wp( $args = array() ) { 27 global $wpdb, $post_ids, $post, $wp_taxonomies; 28 29 if ( ! is_array( $args ) ) 30 $args = array( 'author' => $args ); 31 32 $defaults = array( 'author' => null, 'taxonomy' => null, 'post_type' => null, 'post_status' => null, 'start_date' => null, 'end_date' => null ); 33 $args = wp_parse_args( $args, $defaults ); 34 35 extract($args); 36 37 do_action('export_wp'); 38 39 if( strlen( $start_date ) > 4 && strlen( $end_date ) > 4 ) 40 $filename = 'wordpress.' . $start_date . '.' . $end_date . '.xml'; 41 else 42 $filename = 'wordpress.' . date( 'Y-m-d' ) . '.xml'; 26 global $wpdb, $post; 27 28 do_action( 'export_wp' ); 29 30 $sitename = sanitize_key( get_bloginfo( 'name' ) ); 31 if ( ! empty($sitename) ) $sitename .= '.'; 32 $filename = $sitename . 'wordpress.' . date( 'Y-m-d' ) . '.xml'; 43 33 44 34 header( 'Content-Description: File Transfer' ); … … 46 36 header( 'Content-Type: text/xml; charset=' . get_option( 'blog_charset' ), true ); 47 37 48 if ( $post_type && $post_type != 'all' )49 $where = $wpdb->prepare("WHERE post_type = %s ", $post_type);50 else51 $where = "WHERE post_type != 'revision' ";52 53 if ( $author && $author != 'all' ) {54 $author_id = (int) $author;55 $where .= $wpdb->prepare( "AND post_author = %d ", $author_id );56 }57 58 if ( $start_date && $start_date != 'all' )59 $where .= $wpdb->prepare( "AND post_date >= %s ", $start_date );60 61 if ( $end_date && $end_date != 'all' )62 $where .= $wpdb->prepare( "AND post_date < %s ", $end_date );63 64 if ( $taxonomy && is_array( $taxonomy ) ) {65 foreach ( $taxonomy as $term_id ) {66 if ( $term_id != 'all' )67 $where .= $wpdb->prepare( "AND ID IN (SELECT object_id FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d) ", $term_id );68 }69 }70 71 if ( $post_status && $post_status != 'all' )72 $where .= $wpdb->prepare( "AND post_status = %s", $post_status );73 74 38 // grab a snapshot of post IDs, just in case it changes during the export 75 $post_ids = $wpdb->get_col( "SELECT ID FROM $wpdb->posts $whereORDER BY post_date_gmt ASC" );39 $post_ids = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_type != 'revision' AND post_status != 'auto-draft' ORDER BY post_date_gmt ASC" ); 76 40 77 41 $categories = (array) get_categories( array( 'get' => 'all' ) ); 78 42 $tags = (array) get_tags( array( 'get' => 'all' ) ); 79 43 80 $custom_taxonomies = $wp_taxonomies; 81 unset( $custom_taxonomies['category'] ); 82 unset( $custom_taxonomies['post_tag'] ); 83 unset( $custom_taxonomies['link_category'] ); 84 $custom_taxonomies = array_keys( $custom_taxonomies ); 85 $terms = (array) get_terms( $custom_taxonomies, array( 'get' => 'all' ) ); 86 87 /** 88 * {@internal Missing Short Description}} 89 * 90 * @since unknown 91 * 92 * @param unknown_type $categories 93 */ 94 function wxr_missing_parents( $categories ) { 95 if ( ! is_array( $categories ) || empty( $categories ) ) 96 return array(); 97 98 foreach ( $categories as $category ){ 99 $parents[$category->term_id] = $category->parent; 100 } 101 102 $parents = array_unique( array_diff( $parents, array_keys( $parents ) ) ); 103 104 if ( $zero = array_search( '0', $parents ) ) 105 unset( $parents[$zero] ); 106 107 return $parents; 108 } 109 110 while ( $parents = wxr_missing_parents( $categories ) ) { 111 $found_parents = get_categories( array( 'include' => join( ', ', $parents) ) ); 112 if ( is_array( $found_parents ) && count( $found_parents ) ) 113 $categories = array_merge( $categories, $found_parents ); 114 else 115 break; 116 } 117 118 // Put them in order to be inserted with no child going before its parent 119 $pass = 0; 120 $passes = 1000 + count( $categories ); 121 while ( ( $cat = array_shift( $categories ) ) && ++$pass < $passes ) { 44 $custom_taxonomies = get_taxonomies( array( '_builtin' => false ) ); 45 $taxonomy_terms = (array) get_terms( $custom_taxonomies, array( 'get' => 'all' ) ); 46 47 // put categories in order with no child going before its parent 48 $cats = array(); 49 while ( $cat = array_shift( $categories ) ) { 122 50 if ( $cat->parent == 0 || isset( $cats[$cat->parent] ) ) 123 51 $cats[$cat->term_id] = $cat; … … 125 53 $categories[] = $cat; 126 54 } 127 unset( $categories ); 128 129 /** 130 * Place string in CDATA tag. 131 * 132 * @since unknown 133 * 134 * @param string $str String to place in XML CDATA tag. 55 56 // put terms in order with no child going before its parent 57 $terms = array(); 58 while ( $t = array_shift( $taxonomy_terms ) ) { 59 if ( $t->parent == 0 || isset( $terms[$t->parent] ) ) 60 $terms[$t->term_id] = $t; 61 else 62 $taxonomy_terms[] = $t; 63 } 64 65 /** 66 * Wrap given string in XML CDATA tag. 67 * 68 * @since 2.1.0 69 * 70 * @param string $str String to wrap in XML CDATA tag. 135 71 */ 136 72 function wxr_cdata( $str ) { … … 145 81 146 82 /** 147 * {@internal Missing Short Description}}148 * 149 * @since unknown83 * Return the URL of the site 84 * 85 * @since 2.5.0 150 86 * 151 87 * @return string Site URL. 152 88 */ 153 89 function wxr_site_url() { 154 global $current_site; 155 156 // mu: the base url 157 if ( isset( $current_site->domain ) ) 90 // ms: the base url 91 if ( is_multisite() ) 158 92 return network_home_url(); 159 93 // wp: the blog url … … 163 97 164 98 /** 165 * {@internal Missing Short Description}} 166 * 167 * @since unknown 168 * 169 * @param object $c Category Object 170 */ 171 function wxr_cat_name( $c ) { 172 if ( empty( $c->name ) ) 173 return; 174 175 echo '<wp:cat_name>' . wxr_cdata( $c->name ) . '</wp:cat_name>'; 176 } 177 178 /** 179 * {@internal Missing Short Description}} 180 * 181 * @since unknown 182 * 183 * @param object $c Category Object 184 */ 185 function wxr_category_description( $c ) { 186 if ( empty( $c->description ) ) 187 return; 188 189 echo '<wp:category_description>' . wxr_cdata($c->description) . '</wp:category_description>'; 190 } 191 192 /** 193 * {@internal Missing Short Description}} 194 * 195 * @since unknown 196 * 197 * @param object $t Tag Object 198 */ 199 function wxr_tag_name( $t ) { 200 if ( empty( $t->name ) ) 201 return; 202 203 echo '<wp:tag_name>' . wxr_cdata($t->name) . '</wp:tag_name>'; 204 } 205 206 /** 207 * {@internal Missing Short Description}} 208 * 209 * @since unknown 210 * 211 * @param object $t Tag Object 212 */ 213 function wxr_tag_description( $t ) { 214 if ( empty( $t->description ) ) 215 return; 216 217 echo '<wp:tag_description>' . wxr_cdata($t->description) . '</wp:tag_description>'; 218 } 219 220 /** 221 * {@internal Missing Short Description}} 222 * 223 * @since unknown 224 * 225 * @param object $t Term Object 226 */ 227 function wxr_term_name( $t ) { 228 if ( empty( $t->name ) ) 229 return; 230 231 echo '<wp:term_name>' . wxr_cdata($t->name) . '</wp:term_name>'; 232 } 233 234 /** 235 * {@internal Missing Short Description}} 236 * 237 * @since unknown 238 * 239 * @param object $t Term Object 240 */ 241 function wxr_term_description( $t ) { 242 if ( empty( $t->description ) ) 243 return; 244 245 echo '<wp:term_description>' . wxr_cdata($t->description) . '</wp:term_description>'; 246 } 247 248 /** 249 * {@internal Missing Short Description}} 250 * 251 * @since unknown 99 * Output a cat_name XML tag from a given category object 100 * 101 * @since 2.1.0 102 * 103 * @param object $category Category Object 104 */ 105 function wxr_cat_name( $category ) { 106 if ( empty( $category->name ) ) 107 return; 108 109 echo '<wp:cat_name>' . wxr_cdata( $category->name ) . '</wp:cat_name>'; 110 } 111 112 /** 113 * Output a category_description XML tag from a given category object 114 * 115 * @since 2.1.0 116 * 117 * @param object $category Category Object 118 */ 119 function wxr_category_description( $category ) { 120 if ( empty( $category->description ) ) 121 return; 122 123 echo '<wp:category_description>' . wxr_cdata( $category->description ) . '</wp:category_description>'; 124 } 125 126 /** 127 * Output a tag_name XML tag from a given tag object 128 * 129 * @since 2.3.0 130 * 131 * @param object $tag Tag Object 132 */ 133 function wxr_tag_name( $tag ) { 134 if ( empty( $tag->name ) ) 135 return; 136 137 echo '<wp:tag_name>' . wxr_cdata( $tag->name ) . '</wp:tag_name>'; 138 } 139 140 /** 141 * Output a tag_description XML tag from a given tag object 142 * 143 * @since 2.3.0 144 * 145 * @param object $tag Tag Object 146 */ 147 function wxr_tag_description( $tag ) { 148 if ( empty( $tag->description ) ) 149 return; 150 151 echo '<wp:tag_description>' . wxr_cdata( $tag->description ) . '</wp:tag_description>'; 152 } 153 154 /** 155 * Output a term_name XML tag from a given term object 156 * 157 * @since 2.9.0 158 * 159 * @param object $term Term Object 160 */ 161 function wxr_term_name( $term ) { 162 if ( empty( $term->name ) ) 163 return; 164 165 echo '<wp:term_name>' . wxr_cdata( $term->name ) . '</wp:term_name>'; 166 } 167 168 /** 169 * Output a term_description XML tag from a given term object 170 * 171 * @since 2.9.0 172 * 173 * @param object $term Term Object 174 */ 175 function wxr_term_description( $term ) { 176 if ( empty( $term->description ) ) 177 return; 178 179 echo '<wp:term_description>' . wxr_cdata( $term->description ) . '</wp:term_description>'; 180 } 181 182 /** 183 * Output list of authors with posts 184 * 185 * @since 3.1.0 186 */ 187 function wxr_authors_list() { 188 global $wpdb; 189 190 $authors = array(); 191 $results = $wpdb->get_results( "SELECT DISTINCT post_author FROM $wpdb->posts" ); 192 foreach ( (array) $results as $result ) 193 $authors[] = get_userdata( $result->post_author ); 194 195 foreach( $authors as $author ) { 196 echo "\t<wp:author>"; 197 echo '<wp:author_login>' . $author->user_login . '</wp:author_login>'; 198 echo '<wp:author_email>' . $author->user_email . '</wp:author_email>'; 199 echo '<wp:author_display_name>' . wxr_cdata( $author->display_name ) . '</wp:author_display_name>'; 200 echo '<wp:author_first_name>' . wxr_cdata( $author->user_firstname ) . '</wp:author_first_name>'; 201 echo '<wp:author_last_name>' . wxr_cdata( $author->user_lastname ) . '</wp:author_last_name>'; 202 echo "</wp:author>\n"; 203 } 204 } 205 206 /** 207 * Ouput all navigation menu terms 208 * 209 * @since 3.1.0 210 */ 211 function wxr_nav_menu_terms() { 212 $nav_menus = wp_get_nav_menus(); 213 if ( empty( $nav_menus ) || ! is_array( $nav_menus ) ) 214 return; 215 216 foreach ( $nav_menus as $menu ) { 217 echo "\t<wp:term><wp:term_id>{$menu->term_id}</wp:term_id><wp:term_taxonomy>nav_menu</wp:term_taxonomy><wp:term_slug>{$menu->slug}</wp:term_slug>"; 218 wxr_term_name( $menu ); 219 echo "</wp:term>\n"; 220 } 221 } 222 223 /** 224 * Output list of taxonomy terms, in XML tag format, associated with a post 225 * 226 * @since 2.3.0 252 227 */ 253 228 function wxr_post_taxonomy() { 254 229 global $post; 255 230 256 $t he_list = '';257 $filter = 'rss';258 259 $t axonomies = get_object_taxonomies( 'post');260 $terms = wp_get_post_terms( $post->ID, $taxonomies ); 231 $taxonomies = get_object_taxonomies( $post->post_type ); 232 if ( empty( $taxonomies ) ) 233 return; 234 $terms = wp_get_object_terms( $post->ID, $taxonomies ); 235 261 236 foreach ( (array) $terms as $term ) { 262 $domain = ( 'post_tag' == $term->taxonomy ) ? 'tag' : $term->taxonomy; 263 $term_name = sanitize_term_field( 'name', $term->name, $term->term_id, $term->taxonomy, $filter ); 264 // Back compat. 265 if ( 'category' == $term->taxonomy ) 266 $the_list .= "\n\t\t<category><![CDATA[$term_name]]></category>\n"; 267 elseif ( 'post_tag' == $term->taxonomy ) 268 $the_list .= "\n\t\t<category domain=\"$domain\"><![CDATA[$term_name]]></category>\n"; 269 // forwards compatibility as above 270 $the_list .= "\n\t\t<category domain=\"$domain\" nicename=\"{$term->slug}\"><![CDATA[$term_name]]></category>\n"; 237 echo "\t\t<category domain=\"{$term->taxonomy}\" nicename=\"{$term->slug}\">" . wxr_cdata( $term->name ) . "</category>\n"; 271 238 } 272 echo $the_list; 273 } 274 275 echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?' . ">\n"; 239 } 240 241 echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . "\" ?>\n"; 276 242 277 243 ?> 278 <!-- This is a WordPress eXtended RSS file generated by WordPress as an export of your blog. -->279 <!-- It contains information about your blog's posts, comments, and categories. -->244 <!-- This is a WordPress eXtended RSS file generated by WordPress as an export of your site. --> 245 <!-- It contains information about your site's posts, pages, comments, categories, and other content. --> 280 246 <!-- You may use this file to transfer that content from one site to another. --> 281 <!-- This file is not intended to serve as a complete backup of your blog. --> 282 283 <!-- To import this information into a WordPress blog follow these steps. --> 284 <!-- 1. Log in to that blog as an administrator. --> 285 <!-- 2. Go to Tools: Import in the blog's admin panels (or Manage: Import in older versions of WordPress). --> 286 <!-- 3. Choose "WordPress" from the list. --> 287 <!-- 4. Upload this file using the form provided on that page. --> 288 <!-- 5. You will first be asked to map the authors in this export file to users --> 289 <!-- on the blog. For each author, you may choose to map to an --> 290 <!-- existing user on the blog or to create a new user --> 291 <!-- 6. WordPress will then import each of the posts, comments, and categories --> 292 <!-- contained in this file into your blog --> 293 294 <?php the_generator( 'export' );?> 247 <!-- This file is not intended to serve as a complete backup of your site. --> 248 249 <!-- To import this information into a WordPress site follow these steps: --> 250 <!-- 1. Log in to that site as an administrator. --> 251 <!-- 2. Go to Tools: Import in the WordPress admin panel. --> 252 <!-- 3. Install the "WordPress" importer from the list. --> 253 <!-- 4. Activate & Run Importer. --> 254 <!-- 5. Upload this file using the form provided on that page. --> 255 <!-- 6. You will first be asked to map the authors in this export file to users --> 256 <!-- on the site. For each author, you may choose to map to an --> 257 <!-- existing user on the site or to create a new user. --> 258 <!-- 7. WordPress will then import each of the posts, pages, comments, categories, etc. --> 259 <!-- contained in this file into your site. --> 260 261 <?php the_generator( 'export' ); ?> 295 262 <rss version="2.0" 296 263 xmlns:excerpt="http://wordpress.org/export/<?php echo WXR_VERSION; ?>/excerpt/" … … 303 270 <channel> 304 271 <title><?php bloginfo_rss( 'name' ); ?></title> 305 <link><?php bloginfo_rss( 'url' ) ?></link>306 <description><?php bloginfo_rss( 'description' ) ?></description>272 <link><?php bloginfo_rss( 'url' ); ?></link> 273 <description><?php bloginfo_rss( 'description' ); ?></description> 307 274 <pubDate><?php echo mysql2date( 'D, d M Y H:i:s +0000', get_lastpostmodified( 'GMT' ), false ); ?></pubDate> 308 <generator>http://wordpress.org/?v=<?php bloginfo_rss( 'version' ); ?></generator>309 275 <language><?php echo get_option( 'rss_language' ); ?></language> 310 276 <wp:wxr_version><?php echo WXR_VERSION; ?></wp:wxr_version> 311 277 <wp:base_site_url><?php echo wxr_site_url(); ?></wp:base_site_url> 312 278 <wp:base_blog_url><?php bloginfo_rss( 'url' ); ?></wp:base_blog_url> 313 <?php if ( $cats ) : foreach ( $cats as $c ) : ?> 314 <wp:category><wp:category_nicename><?php echo $c->slug; ?></wp:category_nicename><wp:category_parent><?php echo $c->parent ? $cats[$c->parent]->name : ''; ?></wp:category_parent><?php wxr_cat_name( $c ); ?><?php wxr_category_description( $c ); ?></wp:category> 315 <?php endforeach; endif; ?> 316 <?php if ( $tags ) : foreach ( $tags as $t ) : ?> 317 <wp:tag><wp:tag_slug><?php echo $t->slug; ?></wp:tag_slug><?php wxr_tag_name( $t ); ?><?php wxr_tag_description( $t ); ?></wp:tag> 318 <?php endforeach; endif; ?> 319 <?php if ( $terms ) : foreach ( $terms as $t ) : ?> 320 <wp:term><wp:term_taxonomy><?php echo $t->taxonomy; ?></wp:term_taxonomy><wp:term_slug><?php echo $t->slug; ?></wp:term_slug><wp:term_parent><?php echo $t->parent ? $custom_taxonomies[$t->parent]->name : ''; ?></wp:term_parent><?php wxr_term_name( $t ); ?><?php wxr_term_description( $t ); ?></wp:term> 321 <?php endforeach; endif; ?> 279 280 <?php wxr_authors_list(); ?> 281 282 <?php foreach ( $cats as $c ) : ?> 283 <wp:category><wp:term_id><?php echo $c->term_id ?></wp:term_id><wp:category_nicename><?php echo $c->slug; ?></wp:category_nicename><wp:category_parent><?php echo $c->parent ? $cats[$c->parent]->slug : ''; ?></wp:category_parent><?php wxr_cat_name( $c ); ?><?php wxr_category_description( $c ); ?></wp:category> 284 <?php endforeach; ?> 285 <?php foreach ( $tags as $t ) : ?> 286 <wp:tag><wp:term_id><?php echo $t->term_id ?></wp:term_id><wp:tag_slug><?php echo $t->slug; ?></wp:tag_slug><?php wxr_tag_name( $t ); ?><?php wxr_tag_description( $t ); ?></wp:tag> 287 <?php endforeach; ?> 288 <?php foreach ( $terms as $t ) : ?> 289 <wp:term><wp:term_id><?php echo $t->term_id ?></wp:term_id><wp:term_taxonomy><?php echo $t->taxonomy; ?></wp:term_taxonomy><wp:term_slug><?php echo $t->slug; ?></wp:term_slug><wp:term_parent><?php echo $t->parent ? $terms[$t->parent]->slug : ''; ?></wp:term_parent><?php wxr_term_name( $t ); ?><?php wxr_term_description( $t ); ?></wp:term> 290 <?php endforeach; ?> 291 <?php wxr_nav_menu_terms(); ?> 322 292 323 293 <?php do_action( 'rss2_head' ); ?> 324 294 325 295 <?php if ( $post_ids ) { 326 296 global $wp_query; 327 $wp_query->in_the_loop = true; 297 $wp_query->in_the_loop = true; // Fake being in the loop. 328 298 329 299 // fetch 20 posts at a time rather than loading the entire table into memory … … 333 303 334 304 // Begin Loop 335 foreach ($posts as $post) { 336 setup_postdata( $post ); 337 338 $is_sticky = 0; 339 if ( is_sticky( $post->ID ) ) 340 $is_sticky = 1; 341 342 ?> 305 foreach ( $posts as $post ) { 306 setup_postdata( $post ); 307 $is_sticky = is_sticky( $post->ID ) ? 1 : 0; 308 ?> 343 309 <item> 344 310 <title><?php echo apply_filters( 'the_title_rss', $post->post_title ); ?></title> 345 311 <link><?php the_permalink_rss() ?></link> 346 312 <pubDate><?php echo mysql2date( 'D, d M Y H:i:s +0000', get_post_time( 'Y-m-d H:i:s', true ), false ); ?></pubDate> 347 <dc:creator><?php echo wxr_cdata( get_the_author() ); ?></dc:creator> 348 <?php wxr_post_taxonomy() ?> 349 313 <dc:creator><?php echo get_the_author_meta( 'login' ); ?></dc:creator> 350 314 <guid isPermaLink="false"><?php esc_url( the_guid() ); ?></guid> 351 315 <description></description> … … 364 328 <wp:post_password><?php echo $post->post_password; ?></wp:post_password> 365 329 <wp:is_sticky><?php echo $is_sticky; ?></wp:is_sticky> 366 <?php 367 if ( $post->post_type == 'attachment' ) { ?> 330 <?php if ( $post->post_type == 'attachment' ) : ?> 368 331 <wp:attachment_url><?php echo wp_get_attachment_url( $post->ID ); ?></wp:attachment_url> 369 <?php } ?> 370 <?php 371 $postmeta = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->postmeta WHERE post_id = %d", $post->ID ) ); 372 if ( $postmeta ) { 373 ?> 374 <?php foreach( $postmeta as $meta ) { ?> 332 <?php endif; ?> 333 <?php wxr_post_taxonomy(); ?> 334 <?php $postmeta = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->postmeta WHERE post_id = %d", $post->ID ) ); 335 if ( $postmeta ) : foreach( $postmeta as $meta ) : if ( $meta->meta_key != '_edit_lock' && $meta->meta_key != '_edit_last' ) : ?> 375 336 <wp:postmeta> 376 <wp:meta_key><?php echo $meta->meta_key; ?></wp:meta_key>377 <wp:meta_value><?php echo wxr_cdata( $meta->meta_value ); ?></wp:meta_value>337 <wp:meta_key><?php echo $meta->meta_key; ?></wp:meta_key> 338 <wp:meta_value><?php echo wxr_cdata( $meta->meta_value ); ?></wp:meta_value> 378 339 </wp:postmeta> 379 <?php } ?> 380 <?php } ?> 381 <?php 382 $comments = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d", $post->ID ) ); 383 if ( $comments ) { foreach ( $comments as $c ) { ?> 340 <?php endif; endforeach; endif; ?> 341 <?php $comments = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved <> 'spam'", $post->ID ) ); 342 if ( $comments ) : foreach ( $comments as $c ) : ?> 384 343 <wp:comment> 385 <wp:comment_id><?php echo $c->comment_ID; ?></wp:comment_id>386 <wp:comment_author><?php echo wxr_cdata( $c->comment_author ); ?></wp:comment_author>387 <wp:comment_author_email><?php echo $c->comment_author_email; ?></wp:comment_author_email>388 <wp:comment_author_url><?php echo esc_url_raw( $c->comment_author_url ); ?></wp:comment_author_url>389 <wp:comment_author_IP><?php echo $c->comment_author_IP; ?></wp:comment_author_IP>390 <wp:comment_date><?php echo $c->comment_date; ?></wp:comment_date>391 <wp:comment_date_gmt><?php echo $c->comment_date_gmt; ?></wp:comment_date_gmt>392 <wp:comment_content><?php echo wxr_cdata( $c->comment_content ) ?></wp:comment_content>393 <wp:comment_approved><?php echo $c->comment_approved; ?></wp:comment_approved>394 <wp:comment_type><?php echo $c->comment_type; ?></wp:comment_type>395 <wp:comment_parent><?php echo $c->comment_parent; ?></wp:comment_parent>396 <wp:comment_user_id><?php echo $c->user_id; ?></wp:comment_user_id>344 <wp:comment_id><?php echo $c->comment_ID; ?></wp:comment_id> 345 <wp:comment_author><?php echo wxr_cdata( $c->comment_author ); ?></wp:comment_author> 346 <wp:comment_author_email><?php echo $c->comment_author_email; ?></wp:comment_author_email> 347 <wp:comment_author_url><?php echo esc_url_raw( $c->comment_author_url ); ?></wp:comment_author_url> 348 <wp:comment_author_IP><?php echo $c->comment_author_IP; ?></wp:comment_author_IP> 349 <wp:comment_date><?php echo $c->comment_date; ?></wp:comment_date> 350 <wp:comment_date_gmt><?php echo $c->comment_date_gmt; ?></wp:comment_date_gmt> 351 <wp:comment_content><?php echo wxr_cdata( $c->comment_content ) ?></wp:comment_content> 352 <wp:comment_approved><?php echo $c->comment_approved; ?></wp:comment_approved> 353 <wp:comment_type><?php echo $c->comment_type; ?></wp:comment_type> 354 <wp:comment_parent><?php echo $c->comment_parent; ?></wp:comment_parent> 355 <wp:comment_user_id><?php echo $c->user_id; ?></wp:comment_user_id> 397 356 </wp:comment> 398 <?php } }?>357 <?php endforeach; endif; ?> 399 358 </item> 400 359 <?php 401 360 } 402 361 } … … 406 365 <?php 407 366 } 408 409 ?> -
trunk/wp-includes/general-template.php
r15843 r15961 2230 2230 break; 2231 2231 case 'export': 2232 $gen = '<!-- generator="WordPress/' . get_bloginfo_rss('version') . '" created="'. date('Y-m-d H:i') . '" -->';2232 $gen = '<!-- generator="WordPress/' . get_bloginfo_rss('version') . '" created="'. date('Y-m-d H:i') . '" -->'; 2233 2233 break; 2234 2234 }
Note: See TracChangeset
for help on using the changeset viewer.