Export only a Subset of Wordpress pages

Tags:

In the process of splitting one existing Wordpress site (comprised mostly of hierarchically arranged Pages, not posts) I needed to export a batch of pages into the new one. Here's how to modify your wp-admin/includes/export.php to do that.

First we find the ID number of the parent page that we want to export. This process will export that page and all its sub-pages (children), sub-sub-pages, etc. You can find this by hovering over the "Edit" link in the Wordpress "Pages/Edit" area and noting the "&post=number" section. In my case it was "2" -- that's the number we will use below.

In wp-admin/includes/export.php, find the lines:

// 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");

Comment that out, and replace with:

# Export only a particular page and all its children
$post_ids = array();
$new_pages = array();
$new_pages[] = 2; # Parent page ID, which we will export, along with all its children
while (count($new_pages)) {
  $where = "WHERE post_parent IN (".join(',', $new_pages).")";
  foreach ($new_pages as $np) {
    $post_ids[] = $np;
  }
  $new_pages = array();
  $new_pages = $wpdb->get_col("SELECT ID FROM $wpdb->posts $where ORDER BY post_date_gmt ASC");
}
# $post_ids array now contains the pages we wish to export

Simply run the Export process and you will have just those pages.