Changes from branches/3.0/wp-admin/includes/export.php at r15368 to trunk/wp-admin/includes/export.php at r17415
- File:
-
- 1 edited
-
trunk/wp-admin/includes/export.php (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/includes/export.php
r15368 r17415 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}}19 * Generates the WXR export file for download 21 20 * 22 * @since unknown21 * @since 2.1.0 23 22 * 24 * @param unknown_type $args23 * @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 ); 26 global $wpdb, $post; 27 28 $defaults = array( 'content' => 'all', 'author' => false, 'category' => false, 29 'start_date' => false, 'end_date' => false, 'status' => false, 30 ); 33 31 $args = wp_parse_args( $args, $defaults ); 34 32 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'; 33 do_action( 'export_wp' ); 34 35 $sitename = sanitize_key( get_bloginfo( 'name' ) ); 36 if ( ! empty($sitename) ) $sitename .= '.'; 37 $filename = $sitename . 'wordpress.' . date( 'Y-m-d' ) . '.xml'; 43 38 44 39 header( 'Content-Description: File Transfer' ); … … 46 41 header( 'Content-Type: text/xml; charset=' . get_option( 'blog_charset' ), true ); 47 42 48 if ( $post_type && $post_type != 'all' ) 49 $where = $wpdb->prepare("WHERE post_type = %s ", $post_type); 43 if ( 'all' != $args['content'] && post_type_exists( $args['content'] ) ) { 44 $ptype = get_post_type_object( $args['content'] ); 45 if ( ! $ptype->can_export ) 46 $args['content'] = 'post'; 47 48 $where = $wpdb->prepare( "{$wpdb->posts}.post_type = %s", $args['content'] ); 49 } else { 50 $post_types = get_post_types( array( 'can_export' => true ) ); 51 $esses = array_fill( 0, count($post_types), '%s' ); 52 $where = $wpdb->prepare( "{$wpdb->posts}.post_type IN (". implode(',',$esses) .")", $post_types ); 53 } 54 55 if ( $args['status'] && ( 'post' == $args['content'] || 'page' == $args['content'] ) ) 56 $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_status = %s", $args['status'] ); 50 57 else 51 $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 ); 58 $where .= " AND {$wpdb->posts}.post_status != 'auto-draft'"; 59 60 $join = ''; 61 if ( $args['category'] && 'post' == $args['content'] ) { 62 if ( $term = term_exists( $args['category'], 'category' ) ) { 63 $join = "INNER JOIN {$wpdb->term_relationships} ON ({$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id)"; 64 $where .= $wpdb->prepare( " AND {$wpdb->term_relationships}.term_taxonomy_id = %d", $term['term_taxonomy_id'] ); 65 } 66 } 67 68 if ( 'post' == $args['content'] || 'page' == $args['content'] ) { 69 if ( $args['author'] ) 70 $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_author = %d", $args['author'] ); 71 72 if ( $args['start_date'] ) 73 $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_date >= %s", date( 'Y-m-d', strtotime($args['start_date']) ) ); 74 75 if ( $args['end_date'] ) 76 $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_date < %s", date( 'Y-m-d', strtotime('+1 month', strtotime($args['end_date'])) ) ); 77 } 73 78 74 79 // 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 $where ORDER BY post_date_gmt ASC" ); 76 77 $categories = (array) get_categories( array( 'get' => 'all' ) ); 78 $tags = (array) get_tags( array( 'get' => 'all' ) ); 79 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 ) { 122 if ( $cat->parent == 0 || isset( $cats[$cat->parent] ) ) 123 $cats[$cat->term_id] = $cat; 124 else 125 $categories[] = $cat; 126 } 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. 80 $post_ids = $wpdb->get_col( "SELECT ID FROM {$wpdb->posts} $join WHERE $where" ); 81 82 // get the requested terms ready, empty unless posts filtered by category or all content 83 $cats = $tags = $terms = array(); 84 if ( isset( $term ) && $term ) { 85 $cat = get_term( $term['term_id'], 'category' ); 86 $cats = array( $cat->term_id => $cat ); 87 unset( $term, $cat ); 88 } else if ( 'all' == $args['content'] ) { 89 $categories = (array) get_categories( array( 'get' => 'all' ) ); 90 $tags = (array) get_tags( array( 'get' => 'all' ) ); 91 92 $custom_taxonomies = get_taxonomies( array( '_builtin' => false ) ); 93 $custom_terms = (array) get_terms( $custom_taxonomies, array( 'get' => 'all' ) ); 94 95 // put categories in order with no child going before its parent 96 while ( $cat = array_shift( $categories ) ) { 97 if ( $cat->parent == 0 || isset( $cats[$cat->parent] ) ) 98 $cats[$cat->term_id] = $cat; 99 else 100 $categories[] = $cat; 101 } 102 103 // put terms in order with no child going before its parent 104 while ( $t = array_shift( $custom_terms ) ) { 105 if ( $t->parent == 0 || isset( $terms[$t->parent] ) ) 106 $terms[$t->term_id] = $t; 107 else 108 $custom_terms[] = $t; 109 } 110 111 unset( $categories, $custom_taxonomies, $custom_terms ); 112 } 113 114 /** 115 * Wrap given string in XML CDATA tag. 116 * 117 * @since 2.1.0 118 * 119 * @param string $str String to wrap in XML CDATA tag. 135 120 */ 136 121 function wxr_cdata( $str ) { … … 145 130 146 131 /** 147 * {@internal Missing Short Description}}148 * 149 * @since unknown132 * Return the URL of the site 133 * 134 * @since 2.5.0 150 135 * 151 136 * @return string Site URL. 152 137 */ 153 138 function wxr_site_url() { 154 global $current_site; 155 156 // mu: the base url 157 if ( isset( $current_site->domain ) ) 139 // ms: the base url 140 if ( is_multisite() ) 158 141 return network_home_url(); 159 142 // wp: the blog url … … 163 146 164 147 /** 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 148 * Output a cat_name XML tag from a given category object 149 * 150 * @since 2.1.0 151 * 152 * @param object $category Category Object 153 */ 154 function wxr_cat_name( $category ) { 155 if ( empty( $category->name ) ) 156 return; 157 158 echo '<wp:cat_name>' . wxr_cdata( $category->name ) . '</wp:cat_name>'; 159 } 160 161 /** 162 * Output a category_description XML tag from a given category object 163 * 164 * @since 2.1.0 165 * 166 * @param object $category Category Object 167 */ 168 function wxr_category_description( $category ) { 169 if ( empty( $category->description ) ) 170 return; 171 172 echo '<wp:category_description>' . wxr_cdata( $category->description ) . '</wp:category_description>'; 173 } 174 175 /** 176 * Output a tag_name XML tag from a given tag object 177 * 178 * @since 2.3.0 179 * 180 * @param object $tag Tag Object 181 */ 182 function wxr_tag_name( $tag ) { 183 if ( empty( $tag->name ) ) 184 return; 185 186 echo '<wp:tag_name>' . wxr_cdata( $tag->name ) . '</wp:tag_name>'; 187 } 188 189 /** 190 * Output a tag_description XML tag from a given tag object 191 * 192 * @since 2.3.0 193 * 194 * @param object $tag Tag Object 195 */ 196 function wxr_tag_description( $tag ) { 197 if ( empty( $tag->description ) ) 198 return; 199 200 echo '<wp:tag_description>' . wxr_cdata( $tag->description ) . '</wp:tag_description>'; 201 } 202 203 /** 204 * Output a term_name XML tag from a given term object 205 * 206 * @since 2.9.0 207 * 208 * @param object $term Term Object 209 */ 210 function wxr_term_name( $term ) { 211 if ( empty( $term->name ) ) 212 return; 213 214 echo '<wp:term_name>' . wxr_cdata( $term->name ) . '</wp:term_name>'; 215 } 216 217 /** 218 * Output a term_description XML tag from a given term object 219 * 220 * @since 2.9.0 221 * 222 * @param object $term Term Object 223 */ 224 function wxr_term_description( $term ) { 225 if ( empty( $term->description ) ) 226 return; 227 228 echo '<wp:term_description>' . wxr_cdata( $term->description ) . '</wp:term_description>'; 229 } 230 231 /** 232 * Output list of authors with posts 233 * 234 * @since 3.1.0 235 */ 236 function wxr_authors_list() { 237 global $wpdb; 238 239 $authors = array(); 240 $results = $wpdb->get_results( "SELECT DISTINCT post_author FROM $wpdb->posts" ); 241 foreach ( (array) $results as $result ) 242 $authors[] = get_userdata( $result->post_author ); 243 244 $authors = array_filter( $authors ); 245 246 foreach( $authors as $author ) { 247 echo "\t<wp:author>"; 248 echo '<wp:author_id>' . $author->ID . '</wp:author_id>'; 249 echo '<wp:author_login>' . $author->user_login . '</wp:author_login>'; 250 echo '<wp:author_email>' . $author->user_email . '</wp:author_email>'; 251 echo '<wp:author_display_name>' . wxr_cdata( $author->display_name ) . '</wp:author_display_name>'; 252 echo '<wp:author_first_name>' . wxr_cdata( $author->user_firstname ) . '</wp:author_first_name>'; 253 echo '<wp:author_last_name>' . wxr_cdata( $author->user_lastname ) . '</wp:author_last_name>'; 254 echo "</wp:author>\n"; 255 } 256 } 257 258 /** 259 * Ouput all navigation menu terms 260 * 261 * @since 3.1.0 262 */ 263 function wxr_nav_menu_terms() { 264 $nav_menus = wp_get_nav_menus(); 265 if ( empty( $nav_menus ) || ! is_array( $nav_menus ) ) 266 return; 267 268 foreach ( $nav_menus as $menu ) { 269 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>"; 270 wxr_term_name( $menu ); 271 echo "</wp:term>\n"; 272 } 273 } 274 275 /** 276 * Output list of taxonomy terms, in XML tag format, associated with a post 277 * 278 * @since 2.3.0 252 279 */ 253 280 function wxr_post_taxonomy() { 254 281 global $post; 255 282 256 $t he_list = '';257 $filter = 'rss';258 259 $t axonomies = get_object_taxonomies( 'post');260 $terms = wp_get_post_terms( $post->ID, $taxonomies ); 283 $taxonomies = get_object_taxonomies( $post->post_type ); 284 if ( empty( $taxonomies ) ) 285 return; 286 $terms = wp_get_object_terms( $post->ID, $taxonomies ); 287 261 288 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"; 271 } 272 echo $the_list; 273 } 274 275 echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?' . ">\n"; 289 echo "\t\t<category domain=\"{$term->taxonomy}\" nicename=\"{$term->slug}\">" . wxr_cdata( $term->name ) . "</category>\n"; 290 } 291 } 292 293 echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . "\" ?>\n"; 276 294 277 295 ?> 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. -->296 <!-- This is a WordPress eXtended RSS file generated by WordPress as an export of your site. --> 297 <!-- It contains information about your site's posts, pages, comments, categories, and other content. --> 280 298 <!-- 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' );?> 299 <!-- This file is not intended to serve as a complete backup of your site. --> 300 301 <!-- To import this information into a WordPress site follow these steps: --> 302 <!-- 1. Log in to that site as an administrator. --> 303 <!-- 2. Go to Tools: Import in the WordPress admin panel. --> 304 <!-- 3. Install the "WordPress" importer from the list. --> 305 <!-- 4. Activate & Run Importer. --> 306 <!-- 5. Upload this file using the form provided on that page. --> 307 <!-- 6. You will first be asked to map the authors in this export file to users --> 308 <!-- on the site. For each author, you may choose to map to an --> 309 <!-- existing user on the site or to create a new user. --> 310 <!-- 7. WordPress will then import each of the posts, pages, comments, categories, etc. --> 311 <!-- contained in this file into your site. --> 312 313 <?php the_generator( 'export' ); ?> 295 314 <rss version="2.0" 296 315 xmlns:excerpt="http://wordpress.org/export/<?php echo WXR_VERSION; ?>/excerpt/" … … 303 322 <channel> 304 323 <title><?php bloginfo_rss( 'name' ); ?></title> 305 <link><?php bloginfo_rss( 'url' ) ?></link> 306 <description><?php bloginfo_rss( 'description' ) ?></description> 307 <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> 324 <link><?php bloginfo_rss( 'url' ); ?></link> 325 <description><?php bloginfo_rss( 'description' ); ?></description> 326 <pubDate><?php echo date( 'D, d M Y H:i:s +0000' ); ?></pubDate> 309 327 <language><?php echo get_option( 'rss_language' ); ?></language> 310 328 <wp:wxr_version><?php echo WXR_VERSION; ?></wp:wxr_version> 311 329 <wp:base_site_url><?php echo wxr_site_url(); ?></wp:base_site_url> 312 330 <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; ?> 331 332 <?php wxr_authors_list(); ?> 333 334 <?php foreach ( $cats as $c ) : ?> 335 <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> 336 <?php endforeach; ?> 337 <?php foreach ( $tags as $t ) : ?> 338 <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> 339 <?php endforeach; ?> 340 <?php foreach ( $terms as $t ) : ?> 341 <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> 342 <?php endforeach; ?> 343 <?php if ( 'all' == $args['content'] ) wxr_nav_menu_terms(); ?> 322 344 323 345 <?php do_action( 'rss2_head' ); ?> 324 346 325 <?php if ( $post_ids ) {347 <?php if ( $post_ids ) { 326 348 global $wp_query; 327 $wp_query->in_the_loop = true; // Fake being in the loop.349 $wp_query->in_the_loop = true; // Fake being in the loop. 328 350 329 351 // fetch 20 posts at a time rather than loading the entire table into memory 330 352 while ( $next_posts = array_splice( $post_ids, 0, 20 ) ) { 331 353 $where = "WHERE ID IN (" . join( ',', $next_posts ) . ")"; 332 $posts = $wpdb->get_results( "SELECT * FROM $wpdb->posts $where ORDER BY post_date_gmt ASC" );354 $posts = $wpdb->get_results( "SELECT * FROM {$wpdb->posts} $where" ); 333 355 334 356 // 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 ?> 357 foreach ( $posts as $post ) { 358 setup_postdata( $post ); 359 $is_sticky = is_sticky( $post->ID ) ? 1 : 0; 360 ?> 343 361 <item> 344 362 <title><?php echo apply_filters( 'the_title_rss', $post->post_title ); ?></title> 345 363 <link><?php the_permalink_rss() ?></link> 346 364 <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 365 <dc:creator><?php echo get_the_author_meta( 'login' ); ?></dc:creator> 350 366 <guid isPermaLink="false"><?php esc_url( the_guid() ); ?></guid> 351 367 <description></description> … … 364 380 <wp:post_password><?php echo $post->post_password; ?></wp:post_password> 365 381 <wp:is_sticky><?php echo $is_sticky; ?></wp:is_sticky> 366 <?php 367 if ( $post->post_type == 'attachment' ) { ?> 382 <?php if ( $post->post_type == 'attachment' ) : ?> 368 383 <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 ) { ?> 384 <?php endif; ?> 385 <?php wxr_post_taxonomy(); ?> 386 <?php $postmeta = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->postmeta WHERE post_id = %d", $post->ID ) ); 387 if ( $postmeta ) : foreach( $postmeta as $meta ) : if ( $meta->meta_key != '_edit_lock' ) : ?> 375 388 <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>389 <wp:meta_key><?php echo $meta->meta_key; ?></wp:meta_key> 390 <wp:meta_value><?php echo wxr_cdata( $meta->meta_value ); ?></wp:meta_value> 378 391 </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 ) { ?> 392 <?php endif; endforeach; endif; ?> 393 <?php $comments = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved <> 'spam'", $post->ID ) ); 394 if ( $comments ) : foreach ( $comments as $c ) : ?> 384 395 <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>396 <wp:comment_id><?php echo $c->comment_ID; ?></wp:comment_id> 397 <wp:comment_author><?php echo wxr_cdata( $c->comment_author ); ?></wp:comment_author> 398 <wp:comment_author_email><?php echo $c->comment_author_email; ?></wp:comment_author_email> 399 <wp:comment_author_url><?php echo esc_url_raw( $c->comment_author_url ); ?></wp:comment_author_url> 400 <wp:comment_author_IP><?php echo $c->comment_author_IP; ?></wp:comment_author_IP> 401 <wp:comment_date><?php echo $c->comment_date; ?></wp:comment_date> 402 <wp:comment_date_gmt><?php echo $c->comment_date_gmt; ?></wp:comment_date_gmt> 403 <wp:comment_content><?php echo wxr_cdata( $c->comment_content ) ?></wp:comment_content> 404 <wp:comment_approved><?php echo $c->comment_approved; ?></wp:comment_approved> 405 <wp:comment_type><?php echo $c->comment_type; ?></wp:comment_type> 406 <wp:comment_parent><?php echo $c->comment_parent; ?></wp:comment_parent> 407 <wp:comment_user_id><?php echo $c->user_id; ?></wp:comment_user_id> 397 408 </wp:comment> 398 <?php } }?>409 <?php endforeach; endif; ?> 399 410 </item> 400 <?php411 <?php 401 412 } 402 413 } … … 406 417 <?php 407 418 } 408 409 ?>
Note: See TracChangeset
for help on using the changeset viewer.