Saya menulis tema / plugin khusus di mana saya perlu mengunduh gambar secara programatik dari halaman web tertentu ke folder unggah dan kemudian menyisipkannya sebagai bagian dari posting.
Jadi, saya dapat menemukan url gambar secara terprogram, dan kemudian saya perlu menyimpannya ke folder unggah di bawah konten-wp, namun folder itu memiliki struktur folder WordPress khusus di dalamnya untuk gambar yang disimpan.
Sekarang pertanyaan saya adalah, apakah ada WordPress API atau fungsi atau metode yang memungkinkan saya untuk mengunduh gambar dari web dan menyimpannya ke folder unggahan? Dan jika demikian, apa itu.
Kalau tidak, apa yang harus saya lakukan untuk menyimpan gambar-gambar itu?
Sejauh ini, saya melakukan ini
$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 );
Tetapi kode di atas memberi saya kesalahan berikut
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
Dan setelah diselidiki lebih lanjut, sepertinya kesalahan itu disebabkan oleh
$attachment_data = wp_generate_attachment_metadata( $attachment_id, $image_file_name );
Dan setelah penyelidikan lebih lanjut, dokumentasi untuk wp_insert_attachment()
menyatakan bahwa The file MUST be on the uploads directory
sehubungan dengan$image_file_name
Jadi, bagaimana cara mengunduh gambar dan menyimpannya ke posting saya dengan benar?
Terima kasih banyak.
sumber
Jawaban:
Baru-baru ini saya harus melakukan ini melalui skrip cron malam untuk aliran media sosial. $ parent_id adalah ID posting yang ingin Anda lampirkan gambarnya.
ex:
sumber
Anda belum memposting kode yang digunakan untuk mengambil dan menyimpan gambar, jadi tidak mungkin untuk mengatakan di mana kesalahannya.
Coba kode ini untuk mengambil dan menyimpan gambar:
Kemudian cukup gunakan fungsi-fungsi ini dalam kombinasi dengan kode Anda, seperti:
Ingat juga bahwa Anda harus memasukkan wp-admin / include / image.php dalam kode Anda agar fungsi
wp_generate_attachment_metadata()
berfungsi, lihat CodexSemoga bantuan ini, tetapi harap dicatat bahwa semua kode di sini tidak diuji.
sumber
if ( $mirror['error'] ) return false; //maybe log error
. Juga tidak ada pemeriksaan apakah konten yang diambil sebenarnya adalah gambar$filetype = wp_check_filetype($filename, NULL ); if ( ! substr_count($filetype['type'], 'image') ) return false;
Anda dapat menggunakan fungsi ini untuk mengunggah gambar secara jauh ke folder unggahan dan menetapkannya sebagai gambar unggulan.
Pemakaian:
sumber
Cukup gunakan fungsi default wp (v2.6.0 +):
sumber