确定给定的窗口小部件是否显示在前端。

原型

is_active_widget( string|false $callback = false, int|false $widget_id = false, string|false $id_base = false, bool $skip_inactive = true )

描述

可以使用$ callback或$ id_base $ id_base是扩展WP_Widget类时的第一个参数。如果没有可选的$ widget_id参数,则返回第一个侧边栏的ID,其中找到具有给定回调或$ id_base的窗口小部件的第一个实例。使用$ widget_id参数,返回侧边栏的ID,其中具有该回调的小部件/ $ id_base和找到该ID。

参数

$callback (string|false) (Optional)  小部件回调检查。

$widget_id (int|false) (Optional)  小部件ID。可选,但需要检查。

$id_base (string|false) (Optional)  通过扩展WP_Widget创建的窗口小部件的基本ID。

$skip_inactive (bool) (Optional)  是否签入’wp_inactive_widgets’。

返回值

(string|false)  如果窗口小部件未激活,或者窗口小部件处于活动状态的侧边栏的ID,则返回false。

源文件

路径:wp-includes/widgets.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
...
function is_active_widget( $callback = false, $widget_id = false, $id_base = false, $skip_inactive = true ) {
	global $wp_registered_widgets;

	$sidebars_widgets = wp_get_sidebars_widgets();

	if ( is_array($sidebars_widgets) ) {
		foreach ( $sidebars_widgets as $sidebar => $widgets ) {
			if ( $skip_inactive && ( 'wp_inactive_widgets' === $sidebar || 'orphaned_widgets' === substr( $sidebar, 0, 16 ) ) ) {
				continue;
			}

			if ( is_array($widgets) ) {
				foreach ( $widgets as $widget ) {
					if ( ( $callback && isset($wp_registered_widgets[$widget]['callback']) && $wp_registered_widgets[$widget]['callback'] == $callback ) || ( $id_base && _get_widget_id_base($widget) == $id_base ) ) {
						if ( !$widget_id || $widget_id == $wp_registered_widgets[$widget]['id'] )
							return $sidebar;
					}
				}
			}
		}
	}
	return false;
}

...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/is_active_widget/