Создайте расширение плагина elementor для новой структуры, такой же, как виджет столбца

Я хочу создать расширение плагина elementor для новой структуры, такой же, как виджет столбца, который может позволить добавлять в него другие виджеты.
Мне нужна новая структура, отличная от структуры столбца elementor.
Я ссылался ниже URL для создания виджета, но он может создать единственный виджет, а не раздел.

Ссылочный URL:- https://developers.elementor.com/creating-an-extension-for-elementor/


person maulik    schedule 07.08.2018    source источник


Ответы (1)


Вы можете создать свой собственный плагин, который расширит функциональность существующего плагина, или вы можете создать свой собственный функционал.

<?php
class Elementor_Test_Widget extends \Elementor\Widget_Base {

    public function get_name() {}

    public function get_title() {}

    public function get_icon() {}

    public function get_categories() {}

    protected function _register_controls() {}

    protected function render() {}

    protected function _content_template() {}

}



Widget Name – The get_name() method is a simple one, you just need to return a widget name that will be used in the code.
Widget Title – The get_title() method, which again, is a very simple one, you need to return the widget title that will be displayed as the widget label.
Widget Icon – The get_icon() method, is an optional but recommended method, it lets you set the widget icon. you can use any of the eicon or font-awesome icons, simply return the class name as a string.
Widget Categories – The get_categories method, lets you set the category of the widget, return the category name as a string.
Widget Controls – The _register_controls method lets you define which controls (setting fields) your widget will have.
Render Frontend Output – The render() method, which is where you actually render the code and generate the final HTML on the frontend using PHP.
Render Editor Output – The _content_template() method, is where you render the editor output to generate the live preview using a Backbone JavaScript template.

Класс Widget_Base имеет гораздо больше методов, которые вы можете использовать для разных целей, но пока этого должно быть достаточно.

Пример виджета

<?php

use Elementor\Widget_Base;

class Elementor_oEmbed_Widget extends Widget_Base {


public function get_name() {
    return 'oembed';
}


public function get_title() {
    return __( 'oEmbed', 'plugin-name' );
}


public function get_icon() {
    return 'fa fa-code';
}

/* categories. */
public function get_categories() {
    return [ 'general' ];
}


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>';

}

}
person Mayank Dudakiya    schedule 04.02.2019
comment
В настоящее время я сталкиваюсь с аналогичной проблемой, но я не понимаю, как это отвечает на часть вопроса, относящуюся ко мне. Как указано здесь, это может позволить добавлять в него другие виджеты. Возможно, я предположил, что OP имел в виду другие виджеты Elementor, или я неправильно понимаю, как здесь работает wp_oembed_get. Но похоже, что это расширение виджета с помощью wp_oembed_get не позволяет пользователю перетаскивать другой виджет в виджет, сгенерированный моим собственным плагином. - person Mostafa El Beheiry; 02.09.2020
comment
@MostafaElBeheiry Не могли бы вы объяснить, что вы хотели бы купить? Вы создаете новый виджет Elementor? Вышеупомянутый код поможет вам создать свой собственный виджет Elementor, после чего вы сможете перетаскивать его, как и другие виджеты Elementor, в свой проект. Я создал свой собственный плагин расширения для Elementor, пожалуйста, посмотрите: wordpress.org/plugins/extensions -для-элемента - person Mayank Dudakiya; 02.09.2020
comment
Тогда у меня должны быть проблемы с реализацией, я попробую еще раз с вашей ссылкой, спасибо! Просто повторюсь, я сделал простой плагин карусели (или, скорее, виджет elementor), и я хочу добавить в него внутренний раздел. В которые другие пользователи Elementor могут просто перетаскивать другие виджеты Elementor. Так что мой собственный плагин должен уметь принимать перетаскиваемые элементы. Если это то, что делает приведенный выше код, то я уверен, что неправильно его реализовал. Спасибо за ответ несмотря ни на что! - person Mostafa El Beheiry; 02.09.2020
comment
Просто продолжение: если я правильно понимаю эту тему: github.com/elementor/elementor /issues/4070 Кажется, что это еще не выполнимо в Elementor, у меня уже работает мой виджет, я просто хотел сделать его более настраиваемым. Что ж, я прибегну к более творческим обходным путям, пока, надеюсь, мы не получим эту функцию. - person Mostafa El Beheiry; 02.09.2020
comment
@MostafaElBeheiry Насколько мне известно, мы можем создать любую структуру с существующими возможностями Elementor, а если нет, то мы можем легко создать виджет в соответствии с нашими требованиями. Уже доступен виджет внутреннего раздела, который поможет нам создать любую сложную структуру сайта. Вы также можете использовать бесплатные шаблоны и другие бесплатные расширения, доступные для ускорения разработки. Надеюсь, это решит ваши проблемы. - person Mayank Dudakiya; 02.09.2020
comment
Совершенно правильно, при обсуждении вопросов всего сайта/страницы. Как я уже сказал, я сделал свой собственный виджет, и я хочу, чтобы он мог принимать внутреннюю секцию elementor. Это отличается от создания любой структуры на всей странице. Я не говорил, что хочу воссоздать виджет внутреннего раздела, я хотел иметь возможность добавить его (или любой другой) к существующему пользовательскому виджету. Который, как показывает проблема выше, в настоящее время кажется недосягаемым. Или, по крайней мере, не легко доступны. Но спасибо за предложение и понимание в любом случае! - person Mostafa El Beheiry; 02.09.2020