Berikut adalah contoh cara memintas batasan ini menggunakan tindakan / kait:
function new_attachment( $att_id ){// the post this was sideloaded into is the attachments parent!// fetch the attachment post
$att = get_post( $att_id );// grab it's parent
$post_id = $att->post_parent;// set the featured post
set_post_thumbnail( $post_id, $att_id );}// add the function above to catch the attachments creation
add_action('add_attachment','new_attachment');// load the attachment from the URL
media_sideload_image($image_url, $post_id, $post_id);// we have the image now, and the function above will have fired too setting the thumbnail ID in the process, so lets remove the hook so we don't cause any more trouble
remove_action('add_attachment','new_attachment');
Idenya adalah bahwa ketika media_sideload_imagedijalankan, itu:
mengunduh gambar
menambahkannya sebagai lampiran (jenis tulisan attachment)
kemudian lampirkan lampiran itu ke pos yang ID Anda berikan ($ post_id)
Masalah Anda adalah bahwa itu tidak memberikan ID posting lampiran yang baru dibuat.
Tetapi , ketika lampiran dibuat, tindakan dipecat yang berisi ID-nya. Kita dapat mengaitkan ini sebelum kita membuat lampiran, dan menyimpan thumbnail berfitur dengan ID pos yang diberikannya kepada kita, lalu melepaskan kaitannya setelah itu.
Jika ini menjawab pertanyaan Anda, bisakah Anda menandainya dengan benar?
Tom J Nowell
saya tidak bisa membaca bahasa Inggris Anda. Dapatkah seseorang mengedit posting ini?
HiDd3N
2
@ HiDd3N Saya sudah menyederhanakan beberapa bahasa Inggris yang digunakan, seharusnya memiliki kata-kata yang lebih umum dengan usia membaca yang lebih rendah
Tom J Nowell
6
Saya telah membangun fungsi untuk mendapatkan ID dari DB, mencari berdasarkan URL.
function get_attachment_id_from_src ($image_src){global $wpdb;
$query ="SELECT ID FROM {$wpdb->posts} WHERE guid='$image_src'";
$id = $wpdb->get_var($query);return $id;}
Anda bisa mendapatkan URL (insted dari kode html) dengan paramenter keempat diatur ke 'src'Codex: media_sideload_image ()
@ Tom J Nowell jawaban tepat. Saya menemukan alternatif lain (menggunakan fungsi yang berbeda) yang dijelaskan di sini tapi saya suka yang ini lagi.
Dalam kasus saya, saya memiliki array $ posting dengan semua posting yang ingin saya masukkan dan $ media yang terpisah ($ nid kunci yang sama dengan $ posting) dengan media. Kode saya adalah solusi yang sama dengan Tom tetapi refactored untuk menggunakan fungsi anonim:
Dalam kasus saya, saya menganggap item pertama di setiap $ media [$ nid] harus menjadi gambar unggulan dari posnya.
WordPress shouold pasti mengubah media_sideload_image () sehingga mengembalikan $ id. Sebenarnya fungsi sudah ada, lihat sumbernya di sini . Bahkan ada tiket lintasan untuk ini dan mereka bahkan memiliki tambalan untuk menerapkan ini pada inti Anda sementara itu jika Anda mau.
Saya telah membangun fungsi untuk mendapatkan ID dari DB, mencari berdasarkan URL.
Anda bisa mendapatkan URL (insted dari kode html) dengan paramenter keempat diatur ke
'src'
Codex: media_sideload_image ()sumber
Tidak perlu solusi yang lebih lama lagi.
Anda bisa mendapatkan ID dengan paramenter keempat ($ return) disetel ke 'id'
https://codex.wordpress.org/Function_Reference/media_sideload_image
sumber
@ Tom J Nowell jawaban tepat. Saya menemukan alternatif lain (menggunakan fungsi yang berbeda) yang dijelaskan di sini tapi saya suka yang ini lagi.
Dalam kasus saya, saya memiliki array $ posting dengan semua posting yang ingin saya masukkan dan $ media yang terpisah ($ nid kunci yang sama dengan $ posting) dengan media. Kode saya adalah solusi yang sama dengan Tom tetapi refactored untuk menggunakan fungsi anonim:
Dalam kasus saya, saya menganggap item pertama di setiap $ media [$ nid] harus menjadi gambar unggulan dari posnya.
WordPress shouold pasti mengubah media_sideload_image () sehingga mengembalikan $ id. Sebenarnya fungsi sudah ada, lihat sumbernya di sini . Bahkan ada tiket lintasan untuk ini dan mereka bahkan memiliki tambalan untuk menerapkan ini pada inti Anda sementara itu jika Anda mau.
sumber
Saya mencari solusi dan memutuskan untuk melihat kode
media_sideload_image()
yang sangat mudah. Ini menggunakanmedia_handle_sideload()
yang memberi kita keterikatanid
.Saya memodifikasinya untuk mengembalikan lampiran
id
alih-alih sumber html gambar, dan bahkan menambahkan cara untuk mengirimnya nama file baru.sumber