函数文档

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

Return

array

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.