使WordPress成为核心

来源: 标签/6.5/型钢混凝土/wp包括/小部件/类wp-widget-custom-html.php

上次更改时间在这个文件上56196,签入者audrasjb公司,11个月前

文档:将多行注释替换为多行注释。

此变更集根据WordPress PHP内联文档标准更新各种注释。
请参见https://developer.wordpress.org/coding-standards/inline-documentation-standards.php/#5-内联注释.

后续行动[56174],[56175],[56176],[56177],[56178],[56179],[56180],[56191],[56192],[56193],[56194],[56195].

道具costdev,audrasjb。
请参见#58459.

  • 财产svn:eol风格设置为本地的
文件大小: 11.9 KB
线路 
1<?php(电话)
2/**
*小工具API:WP_Widget_Custom_HTML类
4 *
5*@package WordPress
6*@subpackage小工具
7*@自4.8.1起
8 */
9
10/**
11*用于实现自定义HTML小部件的核心类。
12 *
13*@自4.8.1起
14 *
15*@参见WP_Widget
16 */
17 WP_小部件_自定义_HTML 延伸 WP_小工具 {
18
19       /**
20*小部件是否已注册。
21         *
22*@自4.9.0起
23*@var bool
24         */
25       受保护的 $已注册 = ;
26
27       /**
28*默认实例。
29         *
30*@自4.8.1起
31*@var数组
32         */
33       受保护的 $默认实例 = 阵列(
34               '标题'   => '',
35               '内容' => '',
36       );
37
38       /**
39*设置新的自定义HTML小部件实例。
40         *
41*@自4.8.1起
42         */
43       公众的 功能 __构造() {
44               $widget_ops = 阵列(
45                       '类名'                   => “widget_custom_html”,
46                       '说明'                 => __( “任意HTML代码。” ),
47                       '自定义_选择_刷新' => 真的,
48                       “show_instance_in_rest”       => 真的,
49               );
50               $控制选项 = 阵列(
51                       '宽度' => 400,
52                       “高度” => 350,
53               );
54               父母时间:__构造( '自定义html', __( '自定义HTML' ), $小部件_操作, $控制选项 );
55       }
56
57       /**
58*注册此小部件类的所有小部件实例时,添加用于排队资产的挂钩。
59         *
60*@自4.9.0起
61         *
62*@param int$number可选。此小部件实例的唯一订单号
63*与同一类的其他实例进行比较。默认值为1。
64         */
65       公众的 功能 _寄存器_一( $个 = -1 ) {
66               父母时间:_寄存器_一( $个 );
67               如果 ( $这个->已注册 ) {
68                       返回;
69               }
70               $这个->已注册 = 真的;
71
72               /*
73*请注意,自定义程序中的小部件组件也可以
74*WP_Customize_widgets::print_scripts()中的“admin_print_scripts-widgets.php”操作。
75                 */
76               添加操作(_A)( “admin_print_scripts-widgets.php”, 阵列( $这个, '排队管理员脚本' ) );
77
78               /*
79*请注意,自定义程序中的小部件组件也可以
80*WP_Customize_widgets::print_footer_scripts()中的“admin_footer-widgets.php”操作。
81*/
82               添加操作(_A)( 'admin_footer-widgets.php', 阵列( “WP_Widget_Custom_HTML”, 'render_control_template_scripts' ) );
83
84               //请注意,此操作用于确保帮助文本添加到末尾。
85               添加操作(_A)( 'admin_head-widgets.php', 阵列( “WP_Widget_Custom_HTML”, '添加帮助文本' ) );
86       }
87
88       /**
89*筛选库短代码属性。
90         *
91*阻止网站的所有附件显示在
92*$post上下文不可用的非奇异模板。
93         *
94*@自4.9.0起
95         *
96*@param array$attrs属性。
97*@return数组属性。
98         */
99       公众的 功能 _过滤器库短代码属性( $属性 ) {
100               如果 ( ! 是奇异的(_S)() && 空的( $属性[“id”] ) && 空的( $属性[“包含”] ) ) {
101                       $属性[“id”] = -1;
102               }
103               返回 $属性;
104       }
105
106       /**
107*输出当前自定义HTML小部件实例的内容。
108         *
109*@自4.8.1起
110         *
111*@global WP_Post$Post全局发布对象。
112         *
113*@param array$args显示参数,包括“before_title”、“after_title”、,
114*'before_widget'和'after_widget]。
115*当前自定义HTML小部件实例的@param array$instance设置。
116         */
117       公众的 功能 小装置( $个参数, $实例 ) {
118               全球的 $帖子;
119
120               //覆盖全局$post,以便在一致的上下文中应用筛选器(和短代码)。
121               $original_post(原始_发布) = $帖子;
122               如果 ( 是奇异的(_S)() ) {
123                       //确保post始终是单个查询中的查询对象(而不是来自未能清理全局$post的另一个子查询)。
124                       $帖子 = 获取查询对象();
125               } 其他的 {
126                       //在小部件渲染期间将$post全局设置为null,以防止在存档查询中使用意外上下文运行短代码。
127                       $帖子 = 无效的;
128               }
129
130               //防止从媒体库中转储所有附件。
131               添加筛选器( “shortcode_atts_gallery”, 阵列( $这个, '过滤库短代码属性' ) );
132
133               $实例 = 阵列_合并( $这个->默认实例(_I), $实例 );
134
135               /**这个过滤器记录在wp-includs/widget/class-wp-widget-pages.php中*/
136               $标题 = 应用筛选器( '小部件_标题', $实例['标题'], $实例, $这个->id基础(_B) );
137
138               //准备看起来像普通文本小部件的实例数据。
139               $模拟_文本_小部件_实例 = 阵列_合并(
140                       $实例,
141                       阵列(
142                               “文本”   => 发行( $实例['内容'] ) ? $实例['内容'] : '',
143                               '筛选器' => , //因为没有应用wpauto。
144                               “可视化” => , //因为它不是在TinyMCE中创建的。
145                       )
146               );
147               未设置( $模拟_文本_小部件_实例['内容'] ); //已移至“文本”属性。
148
149               /**该过滤器记录在wp-includes/widgets/class-wp-widget-text.php中*/
150               $内容 = 应用筛选器( '小部件_文本', $实例['内容'], $simulated_text_widget_instance(模拟文本桥实例), $这个 );
151
152               //将“noopener”关系添加到具有目标的所有HTMLA元素中,而不重复值。
153               $内容 = wp_目标链接_rel( $内容 );
154
155               /**
156*过滤自定义HTML小部件的内容。
157                 *
158*@自4.8.1起
159                 *
160*@param string$content小部件内容。
161*@param array$instance当前小部件的设置数组。
162*@param WP_Widget_Custom_HTML$Widget当前自定义HTML小部件实例。
163                 */
164               $内容 = 应用筛选器( '小部件自定义内容', $内容, $实例, $这个 );
165
166               //还原全局日志。
167               $帖子 = $original_post(原始_发布);
168               删除过滤器( “shortcode_atts_gallery”, 阵列( $这个, '过滤库短代码属性' ) );
169
170               //将Text小部件的容器类名与该小部件的类名一起注入,以实现主题样式兼容性。
171               $args美元[“before_widget”] = preg_替换( '/(?<=\sclass=[“\'])/', '小部件_文本', $个参数[“before_widget”] );
172
173               回声 $个参数[“before_widget”];
174               如果 ( ! 空的( $标题 ) ) {
175                       回声 $个参数[“before_title”] . $标题 . $args美元['标题之后'];
176               }
177               回声 '<div class=“textwidget custom-html-widget”>'; //textwidget类用于主题样式兼容性。
178               回声 $内容;
179               回声 '</div>';
180               回声 $个参数[“after_widget”];
181       }
182
183       /**
184*处理当前自定义HTML小部件实例的更新设置。
185         *
186*@自4.8.1起
187         *
188*@param array$new_instance用户通过输入此实例的新设置
189*WP_Widget::form()。
190*@param array$old_instance此实例的旧设置。
191*@return array Settings可保存,bool false可取消保存。
192         */
193       公众的 功能 更新( $新实例, $old_instance(旧实例) ) {
194               $实例         = 阵列_合并( $这个->默认实例(_I), $old_instance(旧实例) );
195               $实例['标题'] = 清理文本字段( $新实例['标题'] );
196               如果 ( 当前用户can( '未感兴趣.html' ) ) {
197                       $实例['内容'] = $新实例['内容'];
198               } 其他的 {
199                       $实例['内容'] = wp_kses_post(服务器)( $新实例['内容'] );
200               }
201               返回 $实例;
202       }
203
204       /**
205*加载小部件控件所需的脚本和样式。
206         *
207*@自4.9.0起
208         */
209       公众的 功能 队列管理员脚本() {
210               $设置 = wp_enqueue_code_editor(
211                       阵列(
212                               “类型”       => '文本/html',
213                               '代码镜像' => 阵列(
214                                       '缩进单位' => 2,
215                                       '选项卡大小'   => 2,
216                               ),
217                       )
218               );
219
220               wp_排队_脚本( '自定义html小部件' );
221               wp_add_inline脚本( '自定义html小部件', 把格式数据写成串( 'wp.customHtmlWidgets.idBases.push(%s);', wp_json编码( $这个->id基础(_B) ) ) );
222
223               如果 ( 空的( $设置 ) ) {
224                       $设置 = 阵列(
225                               “已禁用” => 真的,
226                       );
227               }
228               wp_add_inline脚本( '自定义html小部件', 把格式数据写成串( 'wp.customHtmlWidgets.init(%s);', wp_json编码( $设置 ) ), '之后' );
229
230               1100亿美元 = 阵列(
231                       '错误通知' => 阵列(
232                               /*转换器:%d:错误计数*/
233                               “单数” => _n个( '有%d个错误,必须先修复才能保存。', '有%d个错误必须先修复,然后才能保存。', 1 ),
234                               /*转换器:%d:错误计数*/
235                               “复数”   => _n个( '有%d个错误,必须先修复才能保存。', '有%d个错误必须先修复,然后才能保存。', 2 ),
236                               //@todo这是缺乏的,因为有些语言有专用的双重形式。有关JS中复数的正确处理,请参阅#20491。
237                       ),
238               );
239               wp_add_inline脚本( '自定义html小部件', 把格式数据写成串( 'jQuery.extend(wp.customHtmlWidgets.l10n,%s);', wp_json编码( 1100亿美元 ) ), “之后” );
240       }
241
242       /**
243*输出自定义HTML小部件设置表单。
244         *
245*@自4.8.1起
246*@自4.9.0起表单仅包含隐藏的同步输入。有关控件UI的信息,请参见“WP_Widget_Custom_HTML::render_control_template_scripts()”。
247         *
248*@请参阅WP_Widget_Custom_HTML::render_control_template_scripts()
249         *
250*@param array$instance当前实例。
251         */
252       公众的 功能 形式( $实例 ) {
253               $实例 = wp_parse_args( (阵列) $实例, $这个->默认实例(_I) );
254               ?>
255<输入id=“<?php(电话) 回声 $这个->获取字段id( '标题' ); ?>“name=”<?php(电话) 回声 $这个->获取字段名称( '标题' ); ?>“class=”title sync-input“type=”hidden“value=”<?php(电话) 回声 esc属性( $实例['标题'] ); ?>" />
256<textarea id=“<?php(电话) 回声 $这个->获取字段id( '内容' ); ?>“name=”<?php(电话) 回声 $这个->获取字段名称( '内容' ); ?>“class=”content sync-input“隐藏><?php(电话) 回声 esc_文本区域( $实例['内容'] ); ?></text区域>
257               <?php(电话)
258       }
259
260       /**
261*呈现表单模板脚本。
262         *
263*@自4.9.0起
264         */
265       公众的 静止的 功能 渲染控制模板脚本() {
266               ?>
267<script type=“text/html”id=“tmpl-widget-custom-html-control-fields”>
268<#var elementIdPrefix='el'+字符串(Math.random()).replace(/\D/g,'')+'_'#>
269<p>
270<label for=“{{elementIdPrefix}}title”><?php(电话) esc_html_e( '标题:' ); ?></label>
271<input id=“{{elementIdPrefix}}title”type=“text”class=“widefat title”>
272</p>
273
274<p>
275<label for=“{{elementIdPrefix}}content”id=“{{elementIdPrefix}}content label”><?php(电话) esc_html_e文件( '内容£º' ); ?></label>
276<textarea id=“{{elementIdPrefix}}-content”class=“widefat-code-content”rows=“16”cols=“20”></textarea>
277</p>
278
279                       <?php(电话) 如果 ( ! 当前用户can( '未筛选_html' ) ) : ?>
280                               <?php(电话)
281                               $probably_unsafe_html = 阵列( '脚本', “iframe”, '表单', “输入”, “样式” );
282                               $allowed_html         = wp_kses_allowed_html( “发布” );
283                               $不允许_html     = 阵列差异( $probably_unsafe_html, 数组键( $allowed_html ) );
284                               ?>
285                               <?php(电话) 如果 ( ! 空的( $不允许_html ) ) : ?>
286<#if(data.codeEditorDisabled){#>
287<p>
288                                                       <?php(电话) _e(电子)( '不允许使用某些HTML标记,包括:' ); ?>
289<代码><?php(电话) 回声 内爆( “</code>,<code>”, $不允许_html ); ?></code>
290</p>
291<#}#>
292                               <?php(电话) 结尾; ?>
293                       <?php(电话) 结尾; ?>
294
295<div class=“code-editor-error-container”>
296</script>
297               <?php(电话)
298       }
299
300       /**
301*将帮助文本添加到小部件管理屏幕。
302         *
303*@自4.9.0起
304         */
305       公众的 静止的 功能 添加帮助文本() {
306               $屏幕 = 获取当前屏幕();
307
308               $内容 = “<p>”;
309               $内容 .= __( '使用自定义HTML小部件将任意HTML代码添加到小部件区域。' );
310               $内容 .= “</p>”;
311
312               如果 ( “false” !== wp_获取当前用户()->语法突出显示 ) {
313                       $内容 .= “<p>”;
314                       $内容 .= 把格式数据写成串(
315                               /*翻译人员:1:链接到用户配置文件,2:其他链接属性,3:辅助功能文本*/
316                               __( '编辑字段自动突出显示代码语法。您可以在<a href=“%1$s”%2$s>用户配置文件%3$s中禁用此功能,以便在纯文本模式下工作。' ),
317                               esc_url( 获取编辑配置文件url() ),
318                               'class=“external-link”target=“_blank”',
319                               把格式数据写成串(
320                                       '<span class=“screen-reader-text”>%s</span>',
321                                       /*翻译器:隐藏的辅助功能文本*/
322                                       __( '(在新选项卡中打开)' )
323                               )
324                       );
325                       $内容 .= “</p>”;
326
327                       $内容 .= '<p id=“editor-keyboard-trap-help-1”>' . __( '使用键盘导航时:' ) . “</p>”;
328                       $内容 .= “<ul>”;
329                       $内容 .= '<li id=“editor-keyboard-trap-help-2”>' . __( '在编辑区域中,Tab键输入制表符。' ) . “</li>”;
330                       $内容 .= '<li id=“editor-keyboard-trap-help-3”>' . __( '要离开此区域,请按Esc键,然后按Tab键。' ) . “</li>”;
331                       $内容 .= '<li id=“editor-keyboard-trap-help-4”>' . __( '屏幕阅读器用户:在窗体模式下,可能需要按两次Esc键。' ) . “</li>”;
332                       $内容 .= “</ul>”;
333               }
334
335               $屏幕->添加帮助标签(
336                       阵列(
337                               “id”     => '自定义html_widget',
338                               '标题'   => __( '自定义HTML小工具' ),
339                               '内容' => $内容,
340                       )
341               );
342       }
343}
注:请参见Trac浏览器以获取有关使用存储库浏览器的帮助。