Elementor Widget 无法找到我的 Class,返回致命错误
Elementor Widget not able to locate my Class, returning Fatal Error
我是开发 Elementor Widgets 的新手,所以在我的主题文件夹中,我创建了一个自定义 elementor.php 文件来调用我创建的 widgets 文件夹中的 PHP 文件。应该可以,但由于某种原因,它找不到我在文件中创建的 class。
基本上它调用了一个像这样开始的致命错误:
Fatal error: Uncaught Error: Class 'datacoral\Widgets\Post_Grid' not found in /home/customer/www/staging2.com/public_html/wp-content/themes/my-theme/custom-elementor.php:27
这是我的自定义 elementor.php 文件中的代码:
namespace postgrid;
class Widget_Loader{
private static $_instance = null;
public static function instance()
{
if (is_null(self::$_instance)) {
self::$_instance = new self();
}
return self::$_instance;
}
private function include_widgets_files(){
require_once(__DIR__ . '/widgets/post_grid.php');
}
public function register_widgets(){
$this->include_widgets_files();
\Elementor\Plugin::instance()->widgets_manager->register_widget_type(new Widgets\Post_Grid()); // Call to locate class aka line 27
}
public function __construct(){
add_action('elementor/widgets/widgets_registered', [$this, 'register_widgets'], 99);
}
}
Widget_Loader::instance();
然后在 post_grid 文件中,这里 post 太长了,真正重要的是:
class Post_Grid extends Widget_Base
就像我说的,这对这一切都是新的,但这看起来不错,为什么它不起作用?
您在 Post_Grid 中使用的命名空间是什么?
如果您的命名空间是 datacoral\Widgets,您应该将其设置为与 Widget_Loader (postgrid\Widgets) 相同或在代码顶部导入它(使用 datacoral\Widgets;)以访问 Post_Grid class
我是开发 Elementor Widgets 的新手,所以在我的主题文件夹中,我创建了一个自定义 elementor.php 文件来调用我创建的 widgets 文件夹中的 PHP 文件。应该可以,但由于某种原因,它找不到我在文件中创建的 class。
基本上它调用了一个像这样开始的致命错误:
Fatal error: Uncaught Error: Class 'datacoral\Widgets\Post_Grid' not found in /home/customer/www/staging2.com/public_html/wp-content/themes/my-theme/custom-elementor.php:27
这是我的自定义 elementor.php 文件中的代码:
namespace postgrid;
class Widget_Loader{
private static $_instance = null;
public static function instance()
{
if (is_null(self::$_instance)) {
self::$_instance = new self();
}
return self::$_instance;
}
private function include_widgets_files(){
require_once(__DIR__ . '/widgets/post_grid.php');
}
public function register_widgets(){
$this->include_widgets_files();
\Elementor\Plugin::instance()->widgets_manager->register_widget_type(new Widgets\Post_Grid()); // Call to locate class aka line 27
}
public function __construct(){
add_action('elementor/widgets/widgets_registered', [$this, 'register_widgets'], 99);
}
}
Widget_Loader::instance();
然后在 post_grid 文件中,这里 post 太长了,真正重要的是:
class Post_Grid extends Widget_Base
就像我说的,这对这一切都是新的,但这看起来不错,为什么它不起作用?
您在 Post_Grid 中使用的命名空间是什么? 如果您的命名空间是 datacoral\Widgets,您应该将其设置为与 Widget_Loader (postgrid\Widgets) 相同或在代码顶部导入它(使用 datacoral\Widgets;)以访问 Post_Grid class