wp_list_widget_controls_dynamic_sidebar()
云策文档标注
概述
wp_list_widget_controls_dynamic_sidebar() 函数用于检索小部件控制参数,主要在小部件管理界面中动态处理小部件控制逻辑。它通过修改全局注册的小部件回调函数,将控制权转交给 wp_widget_control() 函数。
关键要点
- 函数接受一个数组参数 $params,包含小部件控制相关的配置信息。
- 内部使用全局变量 $wp_registered_widgets 来访问已注册的小部件,并可能修改其回调函数。
- 函数会递增静态变量 $i 以跟踪调用次数,并处理小部件 ID、隐藏状态等参数。
- 通过设置 before_widget、after_widget、before_title 和 after_title 参数来调整小部件输出格式。
- 如果小部件的回调函数可调用,会将其保存到 _callback 属性,并将回调函数替换为 wp_widget_control()。
- 函数返回修改后的参数数组,用于后续的小部件控制处理。
代码示例
function wp_list_widget_controls_dynamic_sidebar( $params ) {
global $wp_registered_widgets;
static $i = 0;
++$i;
$widget_id = $params[0]['widget_id'];
$id = isset( $params[0]['_temp_id'] ) ? $params[0]['_temp_id'] : $widget_id;
$hidden = isset( $params[0]['_hide'] ) ? ' style="display:none;"' : '';
$params[0]['before_widget'] = "";
$params[0]['after_widget'] = '';
$params[0]['before_title'] = '%BEG_OF_TITLE%'; // Deprecated.
$params[0]['after_title'] = '%END_OF_TITLE%'; // Deprecated.
if ( is_callable( $wp_registered_widgets[ $widget_id ]['callback'] ) ) {
$wp_registered_widgets[ $widget_id ]['_callback'] = $wp_registered_widgets[ $widget_id ]['callback'];
$wp_registered_widgets[ $widget_id ]['callback'] = 'wp_widget_control';
}
return $params;
}注意事项
- before_title 和 after_title 参数已被标记为弃用(Deprecated),建议避免在新代码中使用。
- 函数依赖于全局变量 $wp_registered_widgets,确保在调用前小部件已正确注册。
- 此函数主要用于 WordPress 后台的小部件管理,开发者通常无需直接调用。
原文内容
Retrieves the widget control arguments.
Parameters
$paramsarrayrequired
Source
function wp_list_widget_controls_dynamic_sidebar( $params ) {
global $wp_registered_widgets;
static $i = 0;
++$i;
$widget_id = $params[0]['widget_id'];
$id = isset( $params[0]['_temp_id'] ) ? $params[0]['_temp_id'] : $widget_id;
$hidden = isset( $params[0]['_hide'] ) ? ' style="display:none;"' : '';
$params[0]['before_widget'] = "<div id='widget-{$i}_{$id}' class='widget'$hidden>";
$params[0]['after_widget'] = '</div>';
$params[0]['before_title'] = '%BEG_OF_TITLE%'; // Deprecated.
$params[0]['after_title'] = '%END_OF_TITLE%'; // Deprecated.
if ( is_callable( $wp_registered_widgets[ $widget_id ]['callback'] ) ) {
$wp_registered_widgets[ $widget_id ]['_callback'] = $wp_registered_widgets[ $widget_id ]['callback'];
$wp_registered_widgets[ $widget_id ]['callback'] = 'wp_widget_control';
}
return $params;
}
Changelog
| Version | Description |
|---|---|
| 2.5.0 | Introduced. |