wp.media undefined 使用 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');

原文由 Max 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 367
2 个回答

解决了问题,问题出在 wp_enqueue_media();将脚本调用到页面的 页脚 中。因为我在某处使用了 die() 函数,所以没有加载脚本。

原文由 Max 发布,翻译遵循 CC BY-SA 3.0 许可协议

wp_enqueue_media 函数放入您的入队脚本函数中。

例子:

 add_action('wp_enqueue_scripts', 'prince_load_scripts');

function prince_load_scripts(){
wp_enqueue_media();
//Yor scripts goes here...
}

原文由 Prince Ahmed 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题