我试着制作基本的图片上传小部件。上传器正在工作,但是在选择新图像后,一个按钮Save没有活动。有一个隐藏的输入,其中新图像的值正在更新。但是即使在更新了值之后,WordPress也不认识它。只有当我手动编辑这个输入时,保存按钮才会被激活。
下面是我的PHP代码:
// 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代码
(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);
发布于 2018-02-17 12:08:55
Updated
实际上,您必须触发change
事件才能激活Save按钮。WordPress小部件处理程序只侦听更改。使用JS更新输入字段值时,DOM不会触发任何change
。所以我们必须手动触发。请检查以下代码-
$('.deo-' + type + '-hidden-input').val(attachment.url).trigger('change');
https://wordpress.stackexchange.com/questions/294373
复制相似问题