WP_Widget_Media图像{}

实现图像小部件的核心类。

说明

另请参见

方法

姓名说明
WP_Widget_Media图像::__construct建造师。
WP_Widget_Media图像::enqueue_admin_scripts加载媒体管理器所需的媒体文件和媒体小部件的脚本。
WP_Widget_Media图像::获取实例模式获取小部件实例(项)属性的模式。
WP_Widget_Media图像::render_control_template_scripts呈现表单模板脚本。
WP_Widget_Media图像::render_Media在前端渲染媒体。

来源

类WP_Widget_Media_Image扩展了WP_Wigget_Media{/***建造师。**@自4.8.0起*/公共函数__construct(){父级::__construct('媒体图像',__(“图像”),阵列('description'=>__('显示图像。'),“mime_type”=>“图像”,));$this->l10n=array_merge(这->110亿美元,阵列(‘no_media_selected’=>__(‘未选择图像’),“add_media”=>_x(“添加图像”,“图像小部件中按钮的标签”),“replace_media”=>_x(“replace Image”,“图像小部件中按钮的标签;长度最好不超过~13个字符”),“edit_media”=>_x(“编辑图像”,“图像小部件中按钮的标签;长度最好不超过~13个字符”),“missing_attachment”=>短跑(/*转换器:%s:媒体库的URL*/__('找不到该图像。请检查<a href=“%s”>媒体库</a>,并确保它没有被删除。'),esc_url(管理员url('upload.php'))),/*转换器:%d:小工具计数*/“media_library_state_multi”=>_n_noop(“图像小部件(%d)”,“图像小组件(%d)“),'media_library_state_single'=>__('图像小工具'),));}/***获取小部件实例(项)属性的模式。**@自4.8.0起**@请参阅WP_REST_Controller::get_item_schema()*@请参阅WP_REST_Controller::get_additional_fields()*@链接https://core.trac.wordpress.org/ticket/35574**属性的@return数组架构。*/公共函数get_instance_schema(){返回数组_合并(阵列(“size”=>数组(“type”=>“string”,“enum”=>数组_合并(get_intermediate_image_sizes(),数组(“full”,“custom”)),“默认”=>“中等”,“描述”=>__(“尺寸”),),“width”=>数组(//Via“customWidth”,仅当size=custom时;否则通过“width'”。“type”=>“integer”,“最小值”=>0,“默认”=>0,“描述”=>__(“宽度”),),“height”=>数组(//通过“customHeight”,仅当size=custom时;否则通过“height”。“type”=>“integer”,“最小值”=>0,“默认”=>0,“描述”=>__(“高度”),),“caption”=>数组(“type”=>“string”,“默认”=>“”,“sanitize_callback”=>“wp_kses_post”,“描述”=>__(“标题”),“should_preview_update”=>false,),'alt'=>数组(“type”=>“string”,'默认'=>'',“sanitize_callback”=>“sanitizer_text_field”,“描述”=>__(“可选文本”),),“link_type”=>数组(“type”=>“string”,“enum”=>数组(“none”、“file”、“post”、“custom”),“默认”=>“自定义”,“media_prop”=>“link”,“描述”=>__(“链接到”),“should_preview_update”=>true,),'link_url'=>数组(“type”=>“string”,“默认”=>“”,“format”=>“uri”,“media_prop”=>“linkUrl”,“描述”=>__(“URL”),“should_preview_update”=>true,),“image_classes”=>数组(“type”=>“string”,“默认”=>“”,“sanitize_callback”=>数组($this,”sanitize_token_list“),“media_prop”=>“extraClasses”,“description”=>__(“图像CSS类”),“should_preview_update”=>false,),“link_classes”=>数组('类型'=>'字符串',“默认”=>“”,“sanitize_callback”=>数组($this,”sanitize_token_list“),“media_prop”=>“linkClassName”,“should_preview_update”=>false,'描述'=>__('链接CSS类'),),“link_rel”=>数组(“type”=>“string”,“默认”=>“”,“sanitize_callback”=>数组($this,”sanitize_token_list“),“media_prop”=>“linkRel”,“描述”=>__(“链接关系”),“should_preview_update”=>false,),'link_target_blank'=>数组(“type”=>“boolean”,“default”=>false,“media_prop”=>“linkTargetBlank”,“description”=>__(“在新选项卡中打开链接”),“should_preview_update”=>false,),“image_title”=>数组(“type”=>“string”,“默认”=>“”,“sanitize_callback”=>“sanitizer_text_field”,“media_prop”=>“标题”,“description”=>__(“图像标题属性”),“should_preview_update”=>false,),/**PostImage模式还公开了两个附加属性*这似乎不相关,因为它们可能只是以只读方式派生的*值:*-原始URL*-纵横比*-高度(尺寸非定制时多余)*-宽度(尺寸非自定义时冗余)*/),父级::get_instance_schema());}/***在前端渲染媒体。**@自4.8.0起**@param array$instance Widget实例道具。*/公共函数render_media($instance){$instance=数组合并(wp_list_pluck($this->get_instance_schema(),'default'),$instance);$instance=wp_parse_args($实例,阵列(“大小”=>“缩略图”,));$attachment=空;if($this->is_attachmentwith_time_type($instance['attachment_id'],$this->小部件选项['time_type'])){$attachment=get_post($instance['attachent_id']);}if($附件){$caption=“”;if(!isset($instance['caption']){$caption=$attachment->post_excerpt;}elseif(trim($instance['caption'])){$caption=$instance[‘caption’];}$image_attributes=数组(“class”=>sprintf(“图像wp-image-%d%s”,$attachment->ID,$instance['image_classes']),“样式”=>“最大宽度:100%;高度:自动;',);if(!空($instance['image_title'])){$image_attributes['title']=$instance['image_title'];}if($instance['alt']){$image_attributes['alt']=$instance['alt'];}$size=$instance['size'];if('custom'===$size||!in_array($size,array_merge(get_intermediate_image_sizes(),array('full')),true){$size=数组($instance['width'],$instance['height']);$width=$instance['width'];}其他{$caption_size=_wp_get_image_size_from_meta($instance['size'],wp_get附件_metadata($attachment->ID));$width=空($caption_size[0])?0:$caption_size[0];}$image_attributes['class'].=sprintf('附件-%1$s大小-%1$s',is_array($size)?内爆('x',$size):$size;$image=wp_get_attachment_image($attachment->ID,$size,false,$image_attributes);}其他{if(空($instance['url']){回报;}$instance['size']='自定义';$caption=$instance['caption'];$width=$instance['width'];$classes=“图像”$实例['image_classes'];if(0===$instance['width']){$instance['width']='';}if(0===$instance['height']){$instance['height']='';}$attr=数组(“class”=>$classes,“src”=>$instance[“url”],'alt'=>$instance['alt'],“width”=>$instance['width'],'height'=>$instance['height'],);$loading_optimization_attr=wp_get_loading_optimization_attributes(“img”,$attr,'小部件_媒体_图像');$attr=数组_合并($atrt,$loading_optimization_attr);$attr=数组映射('esc_attr',$attr');$image=“<img”;foreach($attr作为$name=>$value){$image.=“”$名称。'=“'.$value.'”“;}$image.=“/>”;}//结束if()。$url=“”;if(“文件”===$instance['link_type']){$url=$附件?wp_get_attachment_url($attachment->ID):$instance[“url”];}elseif($attachment&&'post'===$instance['link_type']){$url=get_attachment_link($attachment->ID);}elseif('custom'===$instance['link_type']&&!空($instance['link_url']){$url=$instance['link_url'];}if($url){$link=sprintf('<a href=“%s”',esc_url($url));if(!空($instance['link_classes']){$链接。=sprintf('class=“%s”',esc_attr($instance['link_classes']));}if(!空($instance['link_rel']){$link.=sprintf('rel=“%s”',esc_attr($instance['link_rel']));}if(!空($instance['link_target_blank']){$link.='target=“_blank”';}$link.=“>”;$链接。=$形象;$link.='</a> ';$image=wp_targeted_link_rel($link);}if($caption){$image=img_caption_shortcode(阵列('width'=>$width,'caption'=>$caption,),$图像);}echo$image;}/***加载媒体管理器所需的媒体文件和媒体小部件的脚本。**@自4.8.0起*/公共函数enqueue_admin_scripts(){父级::enqueue_admin_scripts();$handle='media-image-widget';wp_enqueue_script($句柄);$exported_schema=array();foreach($this->get_instance_schema()作为$field=>$field_schema){$exported_schema[$field]=wp_array_slice_assoc($field_schema,数组('type','default','enum','minimum','format','media_prop','should_preview_update');}wp_add_inline脚本($句柄,冲刺('wp.mediaWidgets.modelConstructors[%s].prototype.schema=%s;',wp_json_encode($this->id_base),wp_json_encode($exported_schema)));wp_add_inline脚本($句柄,冲刺('wp.mediaWidgets.controlConstructors[%1$s].prototype.mime_type=%2$s;wp.mediaWidgets.controlConstructors[%1$s].prototype.l10n=_.extend({},wp.mediaWidgets.controlConstrustors[%1',%3$s);',wp_json_encode($this->id_base),wp_json_encode($this->widget_options['time_type']),wp_json_encode($this->l10n)));}/***呈现表单模板脚本。**@自4.8.0起*/公共函数render_control_template_scripts(){父项::render_control_template_scripts();?><script type=“text/html”id=“tmpl-wp-media-widget-image-fields”><#var elementIdPrefix='el'+字符串(Math.random())+'_';#><#if(data.url){#><p class=“media-widget-image-link”><label for=“{{elementIdPrefix}}linkUrl”><?php esc_html_e('链接到:');?></标签><input id=“{{elementIdPrefix}}linkUrl”type=“text”class=“widefat link”value=“{{data.link_url}}”placeholder=“https://”pattern=“((w+:)?\\/\\w.*|\w+:(?!\\/$)|\\/|\?|#).*”></p><# } #></script><script type=“text.html”id=“tmpl wp媒体小部件图像预览”><#if(data.error&&“missing_attachment”===数据错误){#><?php(电话)wp_admin_notice(管理员通知)($this->l10n['missing_attachment'],阵列(“type”=>“error”,“additional_classes”=>数组(“notice-alt”,“notice-missing-attachment”),));?><#}else if(data.error){#><?php(电话)wp_admin_notice(管理员通知)(__('由于未知错误,无法预览媒体。'),阵列(“type”=>“error”,“additional_classes”=>数组(“notice-alt”),));?><#}else-if(data.url){#><img class=“attachment thumb”src=“{{data.url}}”draggable=“false”alt=“{{data.alt}}”<#if(!data.alt&&data.currentFilename){#>aria-label=“<?php(电话)回波esc_attr(冲刺(/*转换器:%s:图像文件名*/__('当前图像没有可选文本。文件名为:%s'),“{{data.currentFilename}}”));?>"<# } #>/><# } #></script><?php(电话)}}

变更日志

版本说明
4.8.0介绍。

用户贡献的笔记

你必须登录在能够发表注释或反馈之前。