Загружаем изображение в медиатеку и прикрепляем к записи

Скопировано
$file = 'https://site.ru/image.jpg';
$parent_post_id = 555;

$filename = basename( $file );
$upload_file = wp_upload_bits( $filename, null, file_get_contents( $file ) );
if( ! $upload_file['error'] ) {
	$wp_filetype = wp_check_filetype( $filename, null );
	$attachment = array(
		'post_mime_type' => $wp_filetype['type'],
		'post_parent' => $parent_post_id,
		'post_title' => preg_replace( '/\.[^.]+$/', '', $filename ),
		'post_content' => '',
		'post_status' => 'inherit'
	);
	$attachment_id = wp_insert_attachment( $attachment, $upload_file['file'], $parent_post_id );
	if( !is_wp_error( $attachment_id ) ) {
		require_once( ABSPATH . 'wp-admin/includes/image.php' );
		$attachment_data = wp_generate_attachment_metadata( $attachment_id, $upload_file['file'] );
		wp_update_attachment_metadata( $attachment_id,  $attachment_data );
	}
}
Показать код

В первых двух строках надо указать правильный адрес к файлу и правильный ID записи, к которой его надо прикрепить. Причем в первой строке можно указать не только URL, но и полный путь к файлу, если его надо загрузить с локального сервера.