wp.media undefined using WordPress Media Uploader

f0ofjuux  于 2023-08-03  发布在  WordPress
关注(0)|答案(3)|浏览(108)

**编辑:**其他脚本的变体似乎也不起作用,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');

thigvfpy

thigvfpy1#

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

xxslljrj

xxslljrj2#

wp_enqueue_media函数放到你的enqueue scripts函数中。
示例如下:

add_action('wp_enqueue_scripts', 'prince_load_scripts');

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

字符串

gfttwv5a

gfttwv5a3#

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

相关问题