Неустранимая ошибка: класс 'Elementor \ Widget_Base' не найден - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь добавить новый виджет из моего плагина в 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';
}

в чем может быть проблема>?

...