Saya pikir @janw sudah benar, tapi saya tidak bisa membuat satu hal berfungsi. Jan menyisipkan tombol perpustakaan media menggunakan:
do_action( 'media_buttons', 'default_featured_image' );
dan kemudian mencegah tindakan default menggunakan:
jQuery('#default_featured_image_button').click(function () {...
Masalah yang saya temui adalah memasukkan tombol media dengan cara ini tidak memberikan id "default_featured_image_button" ke tautan. Bahkan tidak menambahkan id pada tautan yang dimasukkan. Jadi ini yang saya lakukan untuk membuatnya bekerja.
Saya menambahkan baris ini ke fungsi panggilan balik kotak meta saya tepat setelah bidang input saya:
<input id="upload_logo_button" type="button" value="Media Library Image" class="button-secondary" />
Saya kemudian enqueued file jquery kustom saya dan file css thickbox, juga di file functions.php saya, menggunakan:
add_action('admin_enqueue_scripts', 'jhsir_load_image_set_js');
function jhsir_load_image_set_js() {
wp_enqueue_script( 'jhsir_image_set_script', get_stylesheet_directory_uri() . '/js/image-set.js', array('jquery','media-upload','thickbox') );
wp_enqueue_style( 'thickbox' );
}
Akhirnya file image-set.js saya termasuk yang berikut:
jQuery(document).ready(function($) {
var formfield = null;
$('#upload_logo_button, #upload_background_button').click(function() {
$('html').addClass('Image');
formfield = $(this).prev('input').attr('name');
formfield_id = $(this).prev('input').attr('id');
tb_show( '', 'media-upload.php?type=image&TB_iframe=true' );
return false;
});
// user inserts file into post.
// only run custom if user started process using the above process
// window.send_to_editor(html) is how wp normally handles the received data
window.original_send_to_editor = window.send_to_editor;
window.send_to_editor = function( html ) {
var fileurl;
if(formfield != null) {
fileurl = $( 'img', html).attr('src');
$( "#" + formfield_id ).val(fileurl);
tb_remove();
$('html').removeClass('Image');
formfield = null;
} else {
window.original_send_to_editor(html);
}
};
});
Anda akan mencatat bahwa saya menggunakan variabel untuk menyimpan nama dan id bidang input yang tepat sebelum tautan yang memanggil jQuery. Dengan cara ini kode ini dapat digunakan berulang kali pada halaman yang sama. Anda hanya perlu menetapkan kelas untuk semua tombol atau menggunakan id individu untuk tombol di jquery Anda seperti yang saya lakukan. Saya harap ini membantu seseorang karena jawaban Jan membantu saya.