wp.media 使用 Wordpress 媒体上传器未定义
wp.media undefined using Wordpress Media Uploader
编辑: 脚本的其他变体似乎也不起作用,wp_enqueue_media() 没问题,但看起来包含 wp.media 不包括在内。
我正在尝试在自定义插件中使用 Wordpress Media Uploader,但不断收到以下错误:
TypeError: undefined is not an object (evaluating 'wp.media.frames')
我的Javascript-代码:
jQuery(document).ready(function(){
var mediaUploader;
jQuery('#upload-button').click(function(e) {
e.preventDefault();
// If the uploader object has already been created, reopen the dialog
if (mediaUploader) {
mediaUploader.open();
return;
}
// Extend the wp.media object
mediaUploader = wp.media.frames.file_frame = wp.media({
title: 'Choose Image',
button: {
text: 'Choose Image'
}, multiple: false });
// When a file is selected, grab the URL and set it as the text field's value
mediaUploader.on('select', function() {
var attachment = mediaUploader.state().get('selection').first().toJSON();
jQuery('#logo').val(attachment.url);
});
// Open the uploader dialog
mediaUploader.open();
});
});
.js文件注册如下:
/* Add the media uploader script */
function my_media_lib_uploader_enqueue() {
wp_enqueue_media();
wp_register_script( 'media-lib-uploader-js', plugins_url( 'media-lib-uploader.js' , __FILE__ ), array('jquery') );
wp_enqueue_script( 'media-lib-uploader-js' );
}
add_action('admin_enqueue_scripts', 'my_media_lib_uploader_enqueue');
问题解决了,问题出在wp_enqueue_media();将脚本调用到页面的 footer 中。因为我在某处使用了 die() 函数,所以没有加载脚本。
将 wp_enqueue_media
函数放入您的入队脚本函数中。
示例:
add_action('wp_enqueue_scripts', 'prince_load_scripts');
function prince_load_scripts(){
wp_enqueue_media();
//Yor scripts goes here...
}
我也遇到了类似的问题...
脚本没有在一个特定页面上加载,尤其是 wp-media 脚本,这导致错误“wp.media 未定义”...所有解决方案均无效。原来这个页面的内容太多了,我的 PHP 内存限制太低了。设置 MemoryLimit 256->512 对我有用...
编辑: 脚本的其他变体似乎也不起作用,wp_enqueue_media() 没问题,但看起来包含 wp.media 不包括在内。
我正在尝试在自定义插件中使用 Wordpress Media Uploader,但不断收到以下错误:
TypeError: undefined is not an object (evaluating 'wp.media.frames')
我的Javascript-代码:
jQuery(document).ready(function(){
var mediaUploader;
jQuery('#upload-button').click(function(e) {
e.preventDefault();
// If the uploader object has already been created, reopen the dialog
if (mediaUploader) {
mediaUploader.open();
return;
}
// Extend the wp.media object
mediaUploader = wp.media.frames.file_frame = wp.media({
title: 'Choose Image',
button: {
text: 'Choose Image'
}, multiple: false });
// When a file is selected, grab the URL and set it as the text field's value
mediaUploader.on('select', function() {
var attachment = mediaUploader.state().get('selection').first().toJSON();
jQuery('#logo').val(attachment.url);
});
// Open the uploader dialog
mediaUploader.open();
});
});
.js文件注册如下:
/* Add the media uploader script */
function my_media_lib_uploader_enqueue() {
wp_enqueue_media();
wp_register_script( 'media-lib-uploader-js', plugins_url( 'media-lib-uploader.js' , __FILE__ ), array('jquery') );
wp_enqueue_script( 'media-lib-uploader-js' );
}
add_action('admin_enqueue_scripts', 'my_media_lib_uploader_enqueue');
问题解决了,问题出在wp_enqueue_media();将脚本调用到页面的 footer 中。因为我在某处使用了 die() 函数,所以没有加载脚本。
将 wp_enqueue_media
函数放入您的入队脚本函数中。
示例:
add_action('wp_enqueue_scripts', 'prince_load_scripts');
function prince_load_scripts(){
wp_enqueue_media();
//Yor scripts goes here...
}
我也遇到了类似的问题... 脚本没有在一个特定页面上加载,尤其是 wp-media 脚本,这导致错误“wp.media 未定义”...所有解决方案均无效。原来这个页面的内容太多了,我的 PHP 内存限制太低了。设置 MemoryLimit 256->512 对我有用...