我正在尝试从插件中将新的小部件添加到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';
}
可能是什么问题>?
答案 0 :(得分:0)
开始时,不会加载Elementor类。因此,请使用init WordPress钩子,在该函数中,需要文件并按照以下代码中的建议创建一个对象。
function load_elementor_widget() {
require('your-php-code-that-extends-elementor-widget-class');
\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new \Elementor\My_Widget_1() );
}
add_action('init', load_elementor_widget())
请查看本教程链接,以帮助您了解: https://develowp.com/build-a-custom-elementor-widget/