WordPress函数is_active_widget()

描述:

用于检查是否小工具/侧边栏已经在前端显示,若要生效,此函数必须在小工具初始化之后运行,

用法:

<?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.

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;
}