<?php /** * Elementor oEmbed Widget. * * Elementor widget that inserts an embbedable content into the page, from any given URL. * * @since 1.0.0 */ class Elementor_FooGallery_Widget extends \Elementor\Widget_Base { /** * Get widget name. * * Retrieve widget name. * * @since 1.0.0 * @access public * * @return string Widget name. */ public function get_name() { return 'foogallery'; } /** * Get widget title. * * Retrieve widget title. * * @since 1.0.0 * @access public * * @return string Widget title. */ public function get_title() { return __( 'FooGallery', 'plugin-name' ); } /** * Get widget icon. * * Retrieve oEmbed widget icon. * * @since 1.0.0 * @access public * * @return string Widget icon. */ public function get_icon() { return 'fa fa-images'; } /** * Get widget categories. * * Retrieve the list of categories the oEmbed widget belongs to. * * @since 1.0.0 * @access public * * @return array Widget categories. */ public function get_categories() { return [ 'general' ]; } /** * Register oEmbed widget controls. * * Adds different input fields to allow the user to change and customize the widget settings. * * @since 1.0.0 * @access protected */ protected function _register_controls() { $this->start_controls_section( 'content_section', [ 'label' => __( 'Content', 'plugin-name' ), 'tab' => \Elementor\Controls_Manager::TAB_CONTENT, ] ); $options = array( '' => '' ); $galleries = foogallery_get_all_galleries(); foreach ( $galleries as $gallery ) { $options[$gallery->ID] = $gallery->name; } $this->add_control( 'gallery_id', [ 'label' => __( 'Choose the FooGallery', 'foogallery' ), 'type' => \Elementor\Controls_Manager::SELECT, 'options' => $options ] ); $this->end_controls_section(); } /** * Render oEmbed widget output on the frontend. * * Written in PHP and used to generate the final HTML. * * @since 1.0.0 * @access protected */ protected function render() { $settings = $this->get_settings_for_display(); $foogallery_id = intval( $settings['gallery_id'] ); foogallery_render_gallery( $foogallery_id ); } }