Подключиться к элементу или виджету?

Я пытаюсь найти ловушку, которая позволит мне добавить мой собственный код в существующий элемент или виджет. Например, у них есть «виджет сообщений», который позволяет отображать список сообщений на основе установленных вами условий / категорий.

Я хотел бы добавить свой собственный код в этот «блок», но не могу найти никаких конкретных крючков для подключения к существующему виджету (в частности, виджету сообщений)

Любая помощь приветствуется. Есть ли для этого крючок? Если нет, то каков мой следующий лучший вариант?

Спасибо!


person KYSSE    schedule 08.12.2018    source источник
comment
У меня похожий вопрос: stackoverflow.com/questions/56287253/, но удовлетворительного ответа пока нет. Вы в этом разобрались?   -  person yunzen    schedule 28.05.2019


Ответы (1)


Это зависит от того, чего вы хотите достичь, но в целом есть зацепки.

Я не уверен насчет виджета сообщений, но в целом могу показать вам несколько примеров.

Если вы хотите добавить элементы управления к виджету, используйте это (дополнительную информацию об именах и т. Д. Вы можете найти в их документации https://developers.elementor.com/add-controls-to-widgets/)

add_action( 'elementor/element/heading/section_title/before_section_end', function( $element, $args ) {
    $element->add_control( 'title_color',
        [
            'label' => 'Color' ,
            'type' => \Elementor\Controls_Manager::SELECT,
            'default' => 'red',
            'options' => [
                'red' => 'Red',
                'blue' => 'Blue',
            ],
            'section' => 'section_title',
            'tab' => 'content',
        ]
    );
}, 10, 2);

виджет в примере - это заголовок. Вы можете узнать зарегистрированные имена, проверив редактор или блоки внутри каталога плагина

Если вы хотите изменить отображаемое содержимое виджета, вы можете использовать это

add_action( 'elementor/widget/render_content', function( $content, $widget ){ // $content (string) = the rendered content of the widget; widget = the data object 
    if ($widget->get_name() === 'heading') { // your targeted widget
        $settings = $widget->get_settings(); // every that is stored in this method. Titles, captions, margins and so on. Usually this is all you need
        // eg if you simply want to wrap your widgets content you can do something like this
        $content .= '<div class="i-am-a-wrapper">'.$content.'</div>';
    }
    return $content;
}, 10, 2 );

Надеюсь, это поможет :)

person Insomnia88    schedule 05.06.2020