Due to the lack of remote connectivity I did a small patch to the WordPress importer (v 0.61) that allows us to place the files locally and bypass the remote fetch the importer would usually attempt.
As I ran into this problem very frequently I think that might be useful for others as well.
In the plugins/wordpress-importer/wordpress-importer.php replace
$headers = wp_get_http( $url, $upload['file'] );
with
// fetch the remote url and write it to the placeholder
// Sometimes you already have all the files in place, so instead
// of downloading them again better see if you can reuse them
// put
// define( 'WP_IMPORTER_CHECK_LOCAL_FILES', true );
// in you wp-config.php to do so.
$existing_upload = wp_upload_dir( $post['upload_date'] );
$existing_upload['file'] = $existing_upload['path'] . "/$file_name";
$existing_upload['url'] = $existing_upload['url'] . "/$file_name";
if ( defined( 'WP_IMPORTER_CHECK_LOCAL_FILES' ) && true === WP_IMPORTER_CHECK_LOCAL_FILES && file_exists( $existing_upload['file'] ) && filesize( $existing_upload['file'] ) > 0 ) {
$headers = array(
'response' => 200,
'content-length' => filesize( $existing_upload['file'] ),
'x-final-location' => $url
);
$upload = $existing_upload;
} else {
$headers = wp_get_http( $url, $upload['file'] );
}
Then you can add define( 'WP_IMPORTER_CHECK_LOCAL_FILES', true ); in your config.php or functions.php file and the WordPress importer will try to locate the file in the uploads folder first and use it if it’s not with a zero filesize.

February 15, 2014 


No comments yet... Be the first to leave a reply!