查找小部件块是否处于活动状态

时间:2021-07-26 作者:JCV

我用来检查我的插件中安装的小部件是否处于活动状态。

随着新的块编辑器扩展到WordPress 5.8中的小部件,我想知道是否有办法检查我创建的小部件块(基于php和基于gutenberg的旧小部件都由我的插件安装)是否由用户激活。

谢谢

1 个回复
SO网友:birgire

例如,可以通过以下方式获取小部件块数据:

$widget_blocks = get_option( \'widget_block\' );
然后在阵列中循环并运行has_block() 在contant部分,例如like(未测试):

function is_active_block_widget_wpse( $blockname )
    $widget_blocks = get_option( \'widget_block\' );
    foreach( (array) $widget_blocks as $widget_block ) {
        if ( ! empty( $widget_block[\'content\'] ) 
             && has_block( $blockname, $widget_block[\'content\'] ) 
        ) {
            return true;
        }
    }
    return false;
}
要查找给定的blockname是否为活动小部件,请执行以下操作:

is_active_block_widget_wpse( \'my-plugin/my-block\' )
我们注意到,这个简单的实现假设没有非活动的块小部件。

其他有用功能:wp_get_sidebars_widgets()is_active_widget()

相关推荐

My widgets do not save

每次我保存我的小部件并离开页面时,我的小部件都会消失。侧边栏已完全清空,不会保存任何更改。控制台或PHP日志中没有任何错误。如果我将小部件直接复制并保存在数据库中widgets_text, 它们将被显示,但我仍然无法在侧边栏中添加或删除任何内容。这只发生在我的右侧边栏上,左侧边栏工作正常,但它们都以相同的方式注册。这是我注册侧边栏的方式:function my_widgets_init() { register_sidebar( array ( \'name\'