函数文档

_wp_remove_unregistered_widgets()

💡 云策文档标注

概述

_wp_remove_unregistered_widgets() 函数用于比较侧边栏及其小部件列表与允许的小部件ID列表,过滤掉未注册的小部件。它接受侧边栏小部件数组和可选允许ID数组作为参数,返回仅包含允许小部件的侧边栏数组。

关键要点

  • 函数比较侧边栏小部件实例ID与允许的小部件ID列表,移除未注册的小部件。
  • 参数 $sidebars_widgets 是必需的侧边栏和小部件实例ID数组;$allowed_widget_ids 是可选的允许小部件ID数组,默认为已注册小部件的键。
  • 返回值为过滤后的侧边栏数组,仅包含允许的小部件。
  • 该函数在 WordPress 4.9.0 版本中引入,用于确保侧边栏小部件的有效性。

代码示例

function _wp_remove_unregistered_widgets( $sidebars_widgets, $allowed_widget_ids = array() ) {
    if ( empty( $allowed_widget_ids ) ) {
        $allowed_widget_ids = array_keys( $GLOBALS['wp_registered_widgets'] );
    }

    foreach ( $sidebars_widgets as $sidebar => $widgets ) {
        if ( is_array( $widgets ) ) {
            $sidebars_widgets[ $sidebar ] = array_intersect( $widgets, $allowed_widget_ids );
        }
    }

    return $sidebars_widgets;
}

📄 原文内容

Compares a list of sidebars with their widgets against an allowed list.

Parameters

$sidebars_widgetsarrayrequired
List of sidebars and their widget instance IDs.
$allowed_widget_idsarrayoptional
List of widget IDs to compare against. Default: Registered widgets.

Default:array()

Return

array Sidebars with allowed widgets.

Source

function _wp_remove_unregistered_widgets( $sidebars_widgets, $allowed_widget_ids = array() ) {
	if ( empty( $allowed_widget_ids ) ) {
		$allowed_widget_ids = array_keys( $GLOBALS['wp_registered_widgets'] );
	}

	foreach ( $sidebars_widgets as $sidebar => $widgets ) {
		if ( is_array( $widgets ) ) {
			$sidebars_widgets[ $sidebar ] = array_intersect( $widgets, $allowed_widget_ids );
		}
	}

	return $sidebars_widgets;
}

Changelog

Version Description
4.9.0 Introduced.