【问题标题】:wp.media undefined using Wordpress Media Uploaderwp.​​media undefined 使用 Wordpress 媒体上传器
【发布时间】: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 wpwp.media的值,等等
  • 即使使用官方 WP 文档中的代码,我也会收到以下错误:TypeError: wp.media is not a function. (In 'wp.media', 'wp.media' is undefined)..

标签: javascript wordpress media uploader


【解决方案1】:

我也有类似的问题... 脚本没有加载到一个特定的页面上,尤其是 wp-media 脚本,这会导致错误“wp.media is not defined”......所有的解决方案都不起作用。原来这个页面上的内容太大了,我的 PHP 内存限制太低了。设置 MemoryLimit 256->512 对我有用...

【讨论】:

  • 经过几天对插件文件的调查和调试...非常感谢。
【解决方案2】:

wp_enqueue_media 函数放入您的 enqueue scripts 函数中。

例子:

add_action('wp_enqueue_scripts', 'prince_load_scripts');

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-21
      • 1970-01-01
      • 2011-02-27
      • 2012-09-04
      • 2013-10-20
      • 2023-02-11
      • 2014-08-17
      相关资源
      最近更新 更多