描述:
用于检查是否小工具/侧边栏已经在前端显示,若要生效,此函数必须在小工具初始化之后运行,
用法:
<?php is_active_widget( $callback, $widget_id, $id_base, $skip_inactive ); ?>
参数:
$callback
(string) (可选) 要检查的小工具回调。 默认值: False
$widget_id
(int) (可选) 要检查的小工具的ID。默认值: None
$id_base
(string) (可选) 通过WP_Widget创建的小工具的ID。默认值: None
$skip_inactive
(boolean) (可选) 是否签入“wp_inactive_widgets”。默认值: True
返回值
(mixed)
如果指定的小工具未处于激活状态,或小工具处于激活状态的侧边栏的ID,则返回False。如果回调不是唯一的,您可以选择指定小工具的id。
源文件
is_active_widget() 函数的代码位于 wp-includes/widgets.php
.
/** * Whether widget is displayed on the front-end. * * Either $callback or $id_base can be used * $id_base is the first argument when extending WP_Widget class * Without the optional $widget_id parameter, returns the ID of the first sidebar * in which the first instance of the widget with the given callback or $id_base is found. * With the $widget_id parameter, returns the ID of the sidebar where * the widget with that callback/$id_base AND that ID is found. * * NOTE: $widget_id and $id_base are the same for single widgets. To be effective * this function has to run after widgets have initialized, at action 'init' or later. * * @since 2.2.0 * * @global array $wp_registered_widgets * * @param string $callback Optional, Widget callback to check. * @param int $widget_id Optional, but needed for checking. Widget ID. * @param string $id_base Optional, the base ID of a widget created by extending WP_Widget. * @param bool $skip_inactive Optional, whether to check in 'wp_inactive_widgets'. * @return string|false False if widget is not active or id of sidebar in which the widget is active. */ 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; }