您的实际问题是您正在使用$(\'.custom_media_url\').val(attachment.url);
无需选择所需的确切字段。这将选择.custom_media_url
页面上的字段,例如每个小部件中的每个字段。
由于您使用的是jQuery,因此可以替换此行:
$(\'.custom_media_url\').val(attachment.url);
具有
$( e.target ).siblings( \'.custom_media_url\' ).val( attachment.url )
但是,使用
wp.media.editor
这不是一个完美的功能,因为它的目的是在编辑器中发送图像,这包括额外的字段,如“链接到”等。这对你来说太过分了。
我建议尝试以下代码片段:
function media_upload( button_class ) {
$( \'body\' ).on( \'click\', button_class, function( e ) {
var $button = $( this ), frame;
e.preventDefault();
// Create a proper popup for selecting an image
frame = wp.media({
title: \'Select image\',
multiple: false,
button: {
text: \'Use this image\'
}
});
// Add a callback for when an item is selected
frame.state( \'library\' ).on( \'select\', function(){
var image = this.get( \'selection\' ).first();
// Inspect the image variable further
// console.log( image.toJSON() )
// Save the actual URL within the input
$button.siblings( \'.custom_media_url\' ).val( image.get( \'url\' ) );
});
// Finally, open the frame
frame.open();
});
}
这将使用一个合适的媒体选择弹出窗口,虽然您可以使用该选项在那里选择图像大小,但那里也不会有无意义的选项。请记住,我没有测试此代码的错误。