você pode escrever um script php, ou fazer o seu próprio plugin deste código aqui, eu usei em um dos meus projetos onde eu tive que importar um grande número de imagens.
Primeiro, pegue a imagem e armazene-a no seu diretório de upload:
$uploaddir = wp_upload_dir();
$uploadfile = $uploaddir['path'] . '/' . $filename;
$contents= file_get_contents('http://mydomain.com/folder/image.jpg');
$savefile = fopen($uploadfile, 'w');
fwrite($savefile, $contents);
fclose($savefile);
depois disso, podemos inserir a imagem na biblioteca de mídia:
$wp_filetype = wp_check_filetype(basename($filename), null );
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => $filename,
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $uploadfile );
$imagenew = get_post( $attach_id );
$fullsizepath = get_attached_file( $imagenew->ID );
$attach_data = wp_generate_attachment_metadata( $attach_id, $fullsizepath );
wp_update_attachment_metadata( $attach_id, $attach_data );
e voila - aqui vamos nós.
Você também pode definir vários outros parâmetros na matriz de anexos.
Se você tem uma matriz de URLs ou algo assim, você pode executar o script em um loop - mas esteja ciente de que as funções de imagem ocupam muito tempo e memória para executar.