Tôi đang viết một chủ đề / plugin tùy chỉnh trong đó tôi cần tải xuống hình ảnh theo chương trình từ một số trang web nhất định vào thư mục tải lên và sau đó chèn chúng như một phần của bài đăng.
Vì vậy, tôi đã có thể tìm thấy url hình ảnh một cách lập trình, và sau đó tôi cần lưu chúng vào thư mục tải lên dưới nội dung wp, tuy nhiên thư mục đó có cấu trúc thư mục WordPress cụ thể bên trong nó cho các hình ảnh đã lưu.
Bây giờ câu hỏi của tôi là, có API hoặc chức năng hoặc phương pháp WordPress sẽ cho phép tôi tải xuống hình ảnh từ web và lưu chúng vào thư mục tải lên không? Và nếu như vậy, nó là gì.
Nếu không, tôi nên làm gì để lưu những hình ảnh đó?
Cho đến nay, tôi đang làm điều này
$filetype = wp_check_filetype(basename($image_file_name), null );
$upload_dir = wp_upload_dir();
$attachment = array(
'guid' => $upload_dir['url'] . '/' . basename( $image_file_name ),
'post_mime_type' => $filetype['type'],
'post_title' => preg_replace('/\.[^.]+$/', '', basename($image_file_name)),
'post_content' => '',
'post_status' => 'inherit'
);
$attachment_id = wp_insert_attachment( $attachment, $image_file_name, $post_id );
$attachment_data = wp_generate_attachment_metadata( $attachment_id, $image_file_name );
wp_update_attachment_metadata( $attachment_id, $attachment_data );
set_post_thumbnail( $post_id, $attachment_id );
Nhưng đoạn mã trên đang cho tôi lỗi sau
imagejpeg(http://wscdn.bbc.co.uk/worldservice/assets/images/2013/07/21/130721173402_egypts_new_foreign_minister_fahmy_304x171_reuters-150x150.jpg): failed to open stream: HTTP wrapper does not support writeable connections in C:\dev\wordpress\pterodactylus\wp-includes\class-wp-image-editor.php on line 334
Và sau khi điều tra thêm, có vẻ như lỗi là do
$attachment_data = wp_generate_attachment_metadata( $attachment_id, $image_file_name );
Và sau khi điều tra sâu hơn, tài liệu cho wp_insert_attachment()
các tiểu bang The file MUST be on the uploads directory
liên quan đến$image_file_name
Vì vậy, làm thế nào để tôi tải xuống một hình ảnh và lưu nó vào bài viết của tôi một cách chính xác?
Cảm ơn rất nhiều.