javascript - WordPress 自定义元框多图片上传

标签 javascript php jquery wordpress

我正在使用自定义帖子类型,其中添加了自定义元框。在自定义元框中,我尝试为多个图像添加媒体 uploader 。通过这个 uploader ,我想将多个图像 ID 存储在一个数组中。问题是我只能保存一个 ID,即使我选择了多个图像。

我真的希望有人能帮助我。

我的JS:

    jQuery(document).ready(function(){
  var addButton = document.getElementById('last-opp-bilde');
  var deleteButton = document.getElementById('fjern-bilde');
  var img = document.getElementById('image-tag');
  var hidden = document.getElementById('img-hidden-field');
  var imageUploader = wp.media({
    title: 'Velg bilde',
    button: {
      text: 'Bruk dette bildet'
    },
    multiple: true
  });

  addButton.addEventListener( 'click', function() {
    if (imageUploader) {
      imageUploader.open();
    }
  });

  imageUploader.on( 'select', function() {
    var attachment = imageUploader.state().get('selection').first().toJSON();
    img.setAttribute( 'src', attachment.url);
    img.setAttribute( 'style', 'width: 50%;');
    hidden.setAttribute( 'value', JSON.stringify( [ { id: attachment.id, url: attachment.url}]));
  });

  deleteButton.addEventListener( 'click', function(){
    img.removeAttribute( 'src' );
    hidden.removeAttribute( 'value' );
    img.removeAttribute( 'style' );
  });

  window.addEventListener( 'DOMContentLoaded', function(){
    img.setAttribute( 'src', imageUploads.imageData.src);
    img.setAttribute( 'style', 'width: 50%;');
    hidden.setAttribute('value', JSON.stringify( [imageUploads.imageData]));
  });
});

最佳答案

我实际上设法解决了这个问题。这是为我完成这项工作的 JS。

    jQuery(document).ready(function(){
  var addButton = document.getElementById('last-opp-bilde');
  //var deleteButton = document.getElementById('fjern-bilde');
  var img = document.getElementById('image-tag');
  var hidden = document.getElementById('img-hidden-field');
  var imageUploader = wp.media({
    title: 'Velg bilde',
    button: {
      text: 'Velg bilde(r)'
    },
    multiple: 'add'
  });

  addButton.addEventListener( 'click', function() {
    if (imageUploader) {
      imageUploader.open();
    }
  });

  imageUploader.on('open',function() {
    var selection = imageUploader.state().get('selection');
    ids = jQuery('#img-hidden-field-selected').val().split(',');
      ids.forEach(function(id) {
    attachment = wp.media.attachment(id);
    attachment.fetch();
    selection.add( attachment ? [ attachment ] : [] );
  });
  });

  imageUploader.on( 'close', function() {
    //var attachment = imageUploader.state().get('selection').first().toJSON();
    var attachment = imageUploader.state().get('selection');
    var ids = attachment.map( function (attachment) {
        return attachment.id;
    });
    hidden.setAttribute( 'value', ids.join(',') );
  });

  imageUploader.on( 'select', function() {
    //var attachment = imageUploader.state().get('selection').first().toJSON();
    var attachment = imageUploader.state().get('selection');
    var ids = attachment.map( function (attachment) {
        return attachment.id;
    });
    hidden.setAttribute( 'value', ids.join(',') );
  });
});

关于javascript - WordPress 自定义元框多图片上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36961192/

相关文章:

javascript - angularJS中& vs @和=有什么区别

Javascript 正则表达式被非单词字符包围,不包括周围环境

php - 运行 sql 查询以插入到表中并更新另一个表

jquery - 禁用 Jquery DatePicker 的周五和周六周末

javascript - 无法使用 Chart.js 制作图表

javascript - openlayers 热图在 map 上显示红线

javascript - jQuery 没有捕获该事件

javascript - 使用类似于 adsense 的异步 javascript 显示远程页面

javascript - 我怎样才能实现这个视频链接中显示的动画?

php - mysql 查询 - 扩展性不佳,15k 条记录速度慢