首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >图像上传Widget问题

图像上传Widget问题
EN

WordPress Development用户
提问于 2018-02-17 11:20:48
回答 1查看 1.4K关注 0票数 1

我试着制作基本的图片上传小部件。上传器正在工作,但是在选择新图像后,一个按钮Save没有活动。有一个隐藏的输入,其中新图像的值正在更新。但是即使在更新了值之后,WordPress也不认识它。只有当我手动编辑这个输入时,保存按钮才会被激活。

下面是我的PHP代码:

代码语言:javascript
运行
复制
  // setup the widget name, description etc.
  function __construct() {
    $widget_options = array(
      'classname'   => esc_attr( "widget-about text-center" ),
      'description'  => esc_html__( 'About me widget', 'lami' ),
      'customize_selective_refresh' => true
    );
    parent::__construct( 'lami_profile', 'Lami About Me', $widget_options);
  }


  // front-end display of widget
  function widget( $args, $instance ) {

    extract( $args );
    echo $args['before_widget'];

    if ( ! empty( $instance['image_url'] ) ) {
      $alt = get_post_meta( attachment_url_to_postid($instance['image_url']), '_wp_attachment_image_alt', true );
      ?>
        
       '',
      )
    );

    $image = ( ! empty( $instance['image_url'] ) ? $instance['image_url'] : '' );

    ?>  

Uploader和按钮的And JS代码

代码语言:javascript
运行
复制
(function($) {
  "use strict";

  /* WordPress Media Uploader
  -------------------------------------------------------*/
  function upload(type) {
    if ( mediaUploader ) {
      mediaUploader.open();
    }

    var mediaUploader = wp.media.frames.file_frame = wp.media({
      title: 'Select an Image',
      button: {
        text: 'Use This Image'
      },
      multiple: false
    });

    mediaUploader.on('select', function() {
      var attachment = mediaUploader.state().get('selection').first().toJSON();
      $('.deo-' + type + '-hidden-input').attr('value', attachment.url);
      $('.deo-' + type + '-media').attr('src', attachment.url);
    });
    mediaUploader.open();
  }

  $('body').on('click', '.deo-image-upload-button', function() {
    upload('image');
  });

  $('body').on('click', '.deo-image-delete-button', function() {
    $('.deo-image-hidden-input').attr('value', '');
    $('.deo-image-media').attr('src', '');
  });

})(jQuery);
EN

回答 1

WordPress Development用户

回答已采纳

发布于 2018-02-17 12:08:55

Updated

实际上,您必须触发change事件才能激活Save按钮。WordPress小部件处理程序只侦听更改。使用JS更新输入字段值时,DOM不会触发任何change。所以我们必须手动触发。请检查以下代码-

代码语言:javascript
运行
复制
$('.deo-' + type + '-hidden-input').val(attachment.url).trigger('change');
票数 2
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/294373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档