wp insert attachment from url, media phần 1 (ok)

https://wordpress.stackexchange.com/questions/256830/programmatically-adding-images-to-media-library

Ví dụ:

//===========
$image_url = 'https://cdn.pixabay.com/photo/2021/02/21/14/37/little-bird-6036530_960_720.jpg';
$upload_dir = wp_upload_dir();
$image_data = file_get_contents( $image_url );
$filename = basename( $image_url );
if ( wp_mkdir_p( $upload_dir['path'] ) ) {
  $file = $upload_dir['path'] . '/' . $filename;
} else {
  $file = $upload_dir['basedir'] . '/' . $filename;
}
file_put_contents( $file, $image_data );
$wp_filetype = wp_check_filetype( $filename, null );
$attachment = array(
  'post_mime_type' => $wp_filetype['type'],
  'post_title' => sanitize_file_name( $filename ),
  'post_content' => '',
  'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $file );
require_once( ABSPATH . 'wp-admin/includes/image.php' );
$attach_data = wp_generate_attachment_metadata( $attach_id, $file );
wp_update_attachment_metadata( $attach_id, $attach_data );
//========

Chú ý:

Tương tự chúng ta có thể sử dụng hàm viết gon như sau

wp-content/themes/twentytwentyone/single.php

Kết quả cũng tương tự :)

Full code và kết quả

Đọc thêm 1

I am trying to programmatically add multiple images to media library, I uploaded the images to wp-content/uploads, now I try to use wp_insert_attachement.

Here's the code, however it's not working as expected, I think metadata is not properly generated, I can see the files in media library, but without a thumbnail, also if I edit the image I get an error saying to re-upload the image.

imagesattachmentsmedia-libraryShareImprove this questionFollowasked Feb 17 '17 at 11:56Adrian18311 gold badge11 silver badge55 bronze badgesAdd a comment

3 Answers

ActiveOldestVotes21

ShareImprove this answerFollowedited Oct 22 '18 at 21:54philippe_b11511 gold badge11 silver badge77 bronze badgesanswered Feb 17 '17 at 12:27TrubinE80777 silver badges1212 bronze badges

Show 3 more comments4

I had issues with @TrubinE's solution where image files were not getting loaded.

Here is a complete example that worked for me: https://gist.github.com/m1r0/f22d5237ee93bcccb0d9

This is a similar idea but use the WP HTTP library to fetch the content versus file_get_contents(). Here is the content of the github gist solution from m1r0:

ShareImprove this answerFollowanswered Dec 4 '18 at 16:57Lance Cleveland34522 silver badges77 bronze badgesAdd a comment3

If you use WordPress' sideload feature, you can do this more easily (and have WordPress handle all of the sanitization for you).

ShareImprove this answerFollow

Đọc thêm 2

Last updated

Was this helpful?