Данный пример совсем не уникален, однако как мне кажется наиболее лаконичен и прост в понимании.
<?php // данные нового поста типа: $_post_data = array( 'post_title' => $title, 'post_status' => 'publish', 'post_author' => 1, 'post_type' => 'post', ); // создаем пост $post_id = wp_insert_post( $_post_data ); // скачиваем файл по URL-адрес хранящемуся в переменной $url $tmp_file = download_url( $url ); // загружаем временный $tmp_file-файл в медиатеку WordPress $att_id = media_handle_sideload( array( 'name' => basename($url), // имя файла берем из URL-а 'tmp_name' => $tmp_file, // путь к временному файлу ), $post_id, $title ); // устанавливаем загруженный файл для записи в качестве миниатюры (thumbnail) set_post_thumbnail($post_id, $att_id);
Получить более подробную информацию по каждой используемой в моём примере функции можно на сайте: wp-kama.ru