prepare(" WHERE post_author = %d ", $author_id); } // grab a snapshot of post IDs, just in case it changes during the export $post_ids = $wpdb->get_col("SELECT ID FROM $wpdb->posts $where ORDER BY post_date_gmt ASC"); $categories = (array) get_categories(array('get' => 'all')); $tags = (array) get_tags(array('get' => 'all')); $custom_taxonomies = $wp_taxonomies; unset($custom_taxonomies['category']); unset($custom_taxonomies['post_tag']); unset($custom_taxonomies['link_category']); $custom_taxonomies = array_keys($custom_taxonomies); $terms = (array) get_terms($custom_taxonomies, 'get=all'); /** * {@internal Missing Short Description}} * * @since unknown * * @param unknown_type $categories */ function wxr_missing_parents($categories) { if ( !is_array($categories) || empty($categories) ) return array(); foreach ( $categories as $category ) $parents[$category->term_id] = $category->parent; $parents = array_unique(array_diff($parents, array_keys($parents))); if ( $zero = array_search('0', $parents) ) unset($parents[$zero]); return $parents; } while ( $parents = wxr_missing_parents($categories) ) { $found_parents = get_categories(array('include' => join(', ', $parents))); if ( is_array($found_parents) && count($found_parents) ) $categories = array_merge($categories, $found_parents); else break; } // Put them in order to be inserted with no child going before its parent $pass = 0; $passes = 1000 + count($categories); while ( ( $cat = array_shift($categories) ) && ++$pass < $passes ) { if ( $cat->parent == 0 || isset($cats[$cat->parent]) ) { $cats[$cat->term_id] = $cat; } else { $categories[] = $cat; } } unset($categories); /** * Place string in CDATA tag. * * @since unknown * * @param string $str String to place in XML CDATA tag. */ function wxr_cdata($str) { if ( seems_utf8($str) == false ) $str = utf8_encode($str); // $str = ent2ncr(esc_html($str)); $str = ""; return $str; } /** * {@internal Missing Short Description}} * * @since unknown * * @return string Site URL. */ function wxr_site_url() { global $current_site; // mu: the base url if ( isset($current_site->domain) ) { return 'http://'.$current_site->domain.$current_site->path; } // wp: the blog url else { return get_bloginfo_rss('url'); } } /** * {@internal Missing Short Description}} * * @since unknown * * @param object $c Category Object */ function wxr_cat_name($c) { if ( empty($c->name) ) return; echo '' . wxr_cdata($c->name) . ''; } /** * {@internal Missing Short Description}} * * @since unknown * * @param object $c Category Object */ function wxr_category_description($c) { if ( empty($c->description) ) return; echo '' . wxr_cdata($c->description) . ''; } /** * {@internal Missing Short Description}} * * @since unknown * * @param object $t Tag Object */ function wxr_tag_name($t) { if ( empty($t->name) ) return; echo '' . wxr_cdata($t->name) . ''; } /** * {@internal Missing Short Description}} * * @since unknown * * @param object $t Tag Object */ function wxr_tag_description($t) { if ( empty($t->description) ) return; echo '' . wxr_cdata($t->description) . ''; } /** * {@internal Missing Short Description}} * * @since unknown * * @param object $t Term Object */ function wxr_term_name($t) { if ( empty($t->name) ) return; echo '' . wxr_cdata($t->name) . ''; } /** * {@internal Missing Short Description}} * * @since unknown * * @param object $t Term Object */ function wxr_term_description($t) { if ( empty($t->description) ) return; echo '' . wxr_cdata($t->description) . ''; } /** * {@internal Missing Short Description}} * * @since unknown */ function wxr_post_taxonomy() { $categories = get_the_category(); $tags = get_the_tags(); $the_list = ''; $filter = 'rss'; if ( !empty($categories) ) foreach ( (array) $categories as $category ) { $cat_name = sanitize_term_field('name', $category->name, $category->term_id, 'category', $filter); // for backwards compatibility $the_list .= "\n\t\t\n"; // forwards compatibility: use a unique identifier for each cat to avoid clashes // http://trac.wordpress.org/ticket/5447 $the_list .= "\n\t\tslug}\">\n"; } if ( !empty($tags) ) foreach ( (array) $tags as $tag ) { $tag_name = sanitize_term_field('name', $tag->name, $tag->term_id, 'post_tag', $filter); $the_list .= "\n\t\t\n"; // forwards compatibility as above $the_list .= "\n\t\tslug}\">\n"; } echo $the_list; } echo '\n"; ?> <?php bloginfo_rss('name'); ?> http://wordpress.org/?v= slug; ?>parent ? $cats[$c->parent]->name : ''; ?> slug; ?> taxonomy; ?>slug; ?>parent ? $custom_taxonomies[$t->parent]->name : ''; ?> in_the_loop = true; // Fake being in the loop. // fetch 20 posts at a time rather than loading the entire table into memory while ( $next_posts = array_splice($post_ids, 0, 20) ) { $where = "WHERE ID IN (".join(',', $next_posts).")"; $posts = $wpdb->get_results("SELECT * FROM $wpdb->posts $where ORDER BY post_date_gmt ASC"); foreach ($posts as $post) { // Don't export revisions. They bloat the export. if ( 'revision' == $post->post_type ) continue; setup_postdata($post); $is_sticky = 0; if ( is_sticky( $post->ID ) ) $is_sticky = 1; ?> <?php echo apply_filters('the_title_rss', $post->post_title); ?> post_content) ); ?> post_excerpt) ); ?> ID; ?> post_date; ?> post_date_gmt; ?> comment_status; ?> ping_status; ?> post_name; ?> post_status; ?> post_parent; ?> menu_order; ?> post_type; ?> post_password; ?> post_type == 'attachment') { ?> ID); ?> get_results( $wpdb->prepare("SELECT * FROM $wpdb->postmeta WHERE post_id = %d", $post->ID) ); if ( $postmeta ) { ?> meta_key; ?> meta_value ); ?> get_results( $wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d", $post->ID) ); if ( $comments ) { foreach ( $comments as $c ) { ?> comment_ID; ?> comment_author); ?> comment_author_email; ?> comment_author_url ); ?> comment_author_IP; ?> comment_date; ?> comment_date_gmt; ?> comment_content) ?> comment_approved; ?> comment_type; ?> comment_parent; ?> user_id; ?>