有没有办法在triyng注册之前检查小部件是否存在


Is there a way to check if widget exists before triyng to register it?

如果你有一个由以下发起的小部件:

function someWidgetLoader () { 
    register_widget( 'someWidget' ); 
}
add_action( 'widgets_init', 'someWidgetLoader ' );

有没有办法检查某些 Widget 是否已注册到 register_widget() 函数?因为如果已经存在,它会发送一个致命错误,指出"无法重新声明类"

谢谢大家

给你的小部件一个与其他任何内容都不匹配的名称/辅助信息域。

此外,如果它确实存在,您将收到类存在错误或一些内部WP错误。所以包装你的小部件类

if( ! class_exists('someWidget')

我遇到了完全相同的错误。经过一些故障排除后,我发现在添加了小部件类的主题文件中,该类的定义是错误的。下面是添加"注释"小部件的示例。

<?php
class Comments extends WP_Widget {
   function Comments() {
       $widget_ops = array('description' => 'This is Comments widget.' );
       parent::WP_Widget(false, __('SampleTheme - Comments', 'sampletheme'),$widget_ops);      
   }
}

如上所示,构造函数是使用 PHP 4 样式定义的,而不是 PHP 8。然后使用 PHP 4 样式构造函数调用父级。

所以我只是通过修复构造函数和父调用来修复它,如下所示:

<?php
class Comments extends WP_Widget {
   function __construct() {
       $widget_ops = array('description' => 'This is Comments widget.' );
       parent::__construct(false, __('Sample Theme - Comments', 'sampletheme'),$widget_ops);
   }
}