Элемент управления настраиваемым мультимедиа Elementor

В настоящее время я пытаюсь скопировать элемент управления мультимедиа плагина Elementor, чтобы внести в него некоторые изменения в wordpress. Я попытался скопировать элемент управления из \ Elementor \ Control_Media, изменив имя класса и этого метода:

class Control_Custom_Media extends \Elementor\Control_Base_Multiple {
    ...
    public function get_type() {
        return 'custommedia';
    }
}  

Затем зарегистрировали это

function register_custom_controls($controls) {
    include 'control-custom-media.php';

    Plugin::instance()->controls_manager->register_control( 'custommedia', new Control_Custom_Media() );
}
add_action( 'elementor/controls/controls_registered', 'register_custom_controls');

Наконец, я создал виджет с этим элементом управления

protected function _register_controls() {
    ...
    $this->add_control(
        'image',
        [
            'label' => __( 'Test', 'custom-plugin' ),
            'type' => 'custommedia',
            'default' => [
                'url' => \Elementor\Utils::get_placeholder_image_src(),
            ],
        ]
    );
    ...
}

Но я не могу заставить его работать. Поле появляется на боковой панели элемента или на боковой панели, но как только я щелкаю, чтобы открыть медиа-библиотеку, оно не работает. Проверили события, и тот, который запускает событие openFrame, по какой-то причине не привязан?

Чтобы проверить, работает ли управление мультимедиа, я добавил его после, и он работает

введите описание изображения здесь

Что я мог делать не так?

заранее спасибо


person Jose Adrian    schedule 12.01.2021    source источник


Ответы (1)


В итоге я расширил элемент управления Media для своего настраиваемого элемента управления и добавил его в качестве представления элемента управления.

var customMediaView = elementor.modules.controls.Media.extend({
    onReady: function () {
        /* do stuff */
    }
});

elementor.addControlView('customMediaView', customMediaView);

О методе постановки в очередь

wp_register_script( 'custommedia-control',  plugins_url('/custommedia-control.js', __DIR__), [ 'elementor-editor' ], '1.0.0', true );
wp_enqueue_script( 'custommedia-control' );
person Jose Adrian    schedule 12.01.2021
comment
У вас есть полный код, как это расширить? Я хотел бы использовать javascript для запуска загрузчика мультимедиа. Спасибо - person Toniq; 24.01.2021
comment
Если он вам все еще нужен, я постараюсь изложить его в github. - person Jose Adrian; 10.03.2021