【发布时间】:2017-06-06 09:57:51
【问题描述】:
编辑:脚本的其他变体似乎也不起作用,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');
【问题讨论】:
-
作为提示,您可以通过使用“无冲突安全”文档来节省自己的时间/精力:
jQuery(function($) { // inside here, you can use $ instead of typing jQuery, such as $('#upload-button').click....}); -
好的,为了提供帮助,了解何时您收到错误会很有用。此外,使用调试,您还可以告诉我们代码中的何处错误最终被抛出。最后,这是您的第一次尝试吗?你有没有工作过?如果没有,我强烈建议遵循官方 WP 文档中的示例:wp.media
-
是的,我曾经让它工作,但突然停止了。这大约是我的网站更新到 4.7.1 的时候。当我单击上传按钮时发生错误。错误是在
mediaUploader = wp.media.frames.file_frame = wp.media({行中抛出的 -
使用你的开发者控制台调试脚本:在该行设置一个暂停点,然后你可以做一些事情,例如检查/console.log
wp和wp.media的值,等等 -
即使使用官方 WP 文档中的代码,我也会收到以下错误:
TypeError: wp.media is not a function. (In 'wp.media', 'wp.media' is undefined)..
标签: javascript wordpress media uploader