使用WordPress函数is_active_widget()确定给定的小部件是否显示在前端
is_active_widget()
是 WordPress 中的一个条件函数,它用于检查特定的小工具(widget)是否已经在当前页面的前端显示或者说是处于活动状态。这个函数对于开发者来说非常有用,它通过检查小工具是否被添加到侧边栏或其他小工具区域(如页眉、页脚)来实现判断,尤其是在需要根据小工具的存在与否来调整页面输出的情况下。
推荐:[最新版]WordPress SEO插件Rank Math Pro
is_active_widget()基本语法
描述
WordPress PHP is_active_widget()函数确定给定的小部件是否显示在前端
用法
is_active_widget($callback,$widget_id,$id_base,$skip_inactive);
$callback
(callable|false) – 可选。要检查的小部件回调。默认值:false$widget_id
(string|false)– 可选。小部件 ID。可选,但需要检查。默认值:false$id_base
(string|false) – 可选。通过扩展 WP_Widget 创建的小部件的基本 ID。默认值:false$skip_inactive
(bool) – 可选。是否检查“wp_inactive_widgets”。默认值:true
推荐:[最新版]YITH WooCommerce Social Login社交登录插件
is_active_widget()函数
在主题或插件开发中,根据小工具的激活状态动态加载资源(如 CSS、JS)或调整页面逻辑,
可以使用 $callback 或 $id_base $id_base 是扩展WP_Widget类时的第一个参数,如果没有可选的 $widget_id 参数,则返回第一个侧边栏的 ID,在该侧边栏中找到具有给定回调或 $id_base 的小部件的第一个实例。
使用 $widget_id 参数,则返回侧边栏的 ID,在该侧边栏中找到具有该回调/$id_base 和该 ID 的小部件。
注意:$widget_id 和 $id_base 对于单个小部件是相同的。要使此函数有效,必须在小部件初始化之后(在操作“init”或之后)运行。(源文件可参考这里)
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 || str_starts_with( $sidebar, 'orphaned_widgets' ) ) ) {
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;
}
推荐:[最新版]Hero Menu免费下载响应式WordPress Mega Menu超级菜单插件
如何使用is_active_widget()
检查特定小部件是否处于活动状态,此示例检查具有给定功能的小部件是否$callback处于活动状态。
if (is_active_widget(false, false, 'my_custom_widget', true)) {
// Do something if the widget is active
}
检查具有特定 ID 的小部件是否处于活动状,此示例检查给定的小部件是否$widget_id处于活动状态。
if (is_active_widget(false, 'my_widget_id', false, true)) {
// Do something if the widget is active
}
当特定小部件处于活动状态时加载脚本,此示例仅当具有给定功能的小部件处于活动状态时才会将脚本排入队列$id_base。
if (is_active_widget(false, false, 'my_widget_base', true)) {
wp_enqueue_script('jquery');
}
检查小部件是否处于活动状态,包括非活动小部件,此示例检查给定的小部件是否$id_base处于活动状态,包括非活动小部件。
if (is_active_widget(false, false, 'my_widget_base', false)) {
// Do something if the widget is active
}
检查具有特定回调的任何小部件是否处于活动状态,此示例检查具有给定$callback功能的任何小部件是否处于活动状态。
if (is_active_widget('my_widget_callback', false, false, true)) {
// Do something if the widget is active
}
推荐:[最新版]WP Speed of Light Pro插件WordPress速度优化插件