В поисках решения для загрузки файлов по URL пришлось изобрести велосипед, потом подсказали метод http://codex.wordpress.org/Function_Reference/media_sideload_image

Но у него проблема — он не возвращает ID добавленной картинки.

Подняв панику в сообществе WordPress, удалось выпросить еще одну подсказку на метод

media_handle_sideload

И по нему нашлась готовая статья http://theme.fm/2011/10/how-to-upload-media-via-url-programmatically-in-wordpress-2657/

Чуть чуть поправив, получаем готовую функцию под эту тему:

function add_file_to_wp_by_url($url = ''){
// $url = '' Input a .zip URL here or any other files
$tmp = download_url( $url );
$file_array = array(
'name' => basename( $url ),
'tmp_name' => $tmp
);

// Check for download errors
if ( is_wp_error( $tmp ) ) {
@unlink( $file_array[ 'tmp_name' ] );
return $tmp;
}

$id = media_handle_sideload( $file_array, 0 );
// Check for handle sideload errors.
if ( is_wp_error( $id ) ) {
@unlink( $file_array['tmp_name'] );
return $id;
}

$attachment_url = wp_get_attachment_url( $id );
// Do whatever you have to here
return $id;
}