Я пытаюсь добавить новый виджет из моего плагина в elementor. Я следовал за документацией к тому, как создать виджет elementor: https://developers.elementor.com/creating-a-new-widget/
Но проблема в том, что он не работает ..
Нет # 1. Когда я использую автозагрузку, он не показывает никаких ошибок
Нет # 2. Но когда я использую require_once
, это показывает фатальную ошибку: Fatal error: Class 'Elementor\Widget_Base' not found
Код моего виджета
<?php
namespace WPEVENTCAL\extensions\elementor;
class widget extends \Elementor\Widget_Base {
public function get_name() {
return 'Aembed';
}
public function get_title() {
return __( 'oEmbed', 'plugin-name' );
}
public function get_icon() {
return 'fa fa-code';
}
public function get_categories() {
return [ 'basic' ];
}
protected function _register_controls() {
$this->start_controls_section(
'content_section',
[
'label' => __( 'Content', 'plugin-name' ),
'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
]
);
$this->add_control(
'url',
[
'label' => __( 'URL to embed', 'plugin-name' ),
'type' => \Elementor\Controls_Manager::TEXT,
'input_type' => 'url',
'placeholder' => __( 'https://your-link.com', 'plugin-name' ),
]
);
$this->end_controls_section();
}
protected function render() {
$settings = $this->get_settings_for_display();
$html = wp_oembed_get( $settings['url'] );
echo '<div class="oembed-elementor-widget">';
echo ( $html ) ? $html : $settings['url'];
echo '</div>';
}
}
Структура моей папки
-Main plugin file
-extension
-elementor
-widget.php
- index.php
В index.php
я звоню require_once( 'extensions/elementor/widget.php' );
Выдает эту ошибку: Fatal error: Class 'Elementor\Widget_Base' not found
Но когда я использую функцию автозагрузки в индексе, она не выдает никакой ошибки и не отображает виджет
use WPEVENTCAL\extensions\elementor\index;
function autoload($class = '') {
if (!strstr($class, 'WPEVENTCAL')) {
return;
}
$result = str_replace('WPEVENTCAL\\', '', $class);
$result = str_replace('\\', '/', $result);
require $result . '.php';
}
в чем может быть проблема>?