shortcode.php (3179B)
1 <?php 2 namespace Elementor; 3 4 if ( ! defined( 'ABSPATH' ) ) { 5 exit; // Exit if accessed directly. 6 } 7 8 /** 9 * Elementor shortcode widget. 10 * 11 * Elementor widget that insert any shortcodes into the page. 12 * 13 * @since 1.0.0 14 */ 15 class Widget_Shortcode extends Widget_Base { 16 17 /** 18 * Get widget name. 19 * 20 * Retrieve shortcode widget name. 21 * 22 * @since 1.0.0 23 * @access public 24 * 25 * @return string Widget name. 26 */ 27 public function get_name() { 28 return 'shortcode'; 29 } 30 31 /** 32 * Get widget title. 33 * 34 * Retrieve shortcode widget title. 35 * 36 * @since 1.0.0 37 * @access public 38 * 39 * @return string Widget title. 40 */ 41 public function get_title() { 42 return esc_html__( 'Shortcode', 'elementor' ); 43 } 44 45 /** 46 * Get widget icon. 47 * 48 * Retrieve shortcode widget icon. 49 * 50 * @since 1.0.0 51 * @access public 52 * 53 * @return string Widget icon. 54 */ 55 public function get_icon() { 56 return 'eicon-shortcode'; 57 } 58 59 /** 60 * Get widget keywords. 61 * 62 * Retrieve the list of keywords the widget belongs to. 63 * 64 * @since 2.1.0 65 * @access public 66 * 67 * @return array Widget keywords. 68 */ 69 public function get_keywords() { 70 return [ 'shortcode', 'code' ]; 71 } 72 73 /** 74 * Whether the reload preview is required or not. 75 * 76 * Used to determine whether the reload preview is required. 77 * 78 * @since 1.0.0 79 * @access public 80 * 81 * @return bool Whether the reload preview is required. 82 */ 83 public function is_reload_preview_required() { 84 return true; 85 } 86 87 /** 88 * Register shortcode widget controls. 89 * 90 * Adds different input fields to allow the user to change and customize the widget settings. 91 * 92 * @since 3.1.0 93 * @access protected 94 */ 95 protected function register_controls() { 96 $this->start_controls_section( 97 'section_shortcode', 98 [ 99 'label' => esc_html__( 'Shortcode', 'elementor' ), 100 ] 101 ); 102 103 $this->add_control( 104 'shortcode', 105 [ 106 'label' => esc_html__( 'Enter your shortcode', 'elementor' ), 107 'type' => Controls_Manager::TEXTAREA, 108 'dynamic' => [ 109 'active' => true, 110 ], 111 'placeholder' => '[gallery id="123" size="medium"]', 112 'default' => '', 113 ] 114 ); 115 116 $this->end_controls_section(); 117 } 118 119 /** 120 * Render shortcode widget output on the frontend. 121 * 122 * Written in PHP and used to generate the final HTML. 123 * 124 * @since 1.0.0 125 * @access protected 126 */ 127 protected function render() { 128 $shortcode = $this->get_settings_for_display( 'shortcode' ); 129 130 $shortcode = do_shortcode( shortcode_unautop( $shortcode ) ); 131 ?> 132 <div class="elementor-shortcode"><?php echo $shortcode; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></div> 133 <?php 134 } 135 136 /** 137 * Render shortcode widget as plain content. 138 * 139 * Override the default behavior by printing the shortcode instead of rendering it. 140 * 141 * @since 1.0.0 142 * @access public 143 */ 144 public function render_plain_content() { 145 // In plain mode, render without shortcode 146 $this->print_unescaped_setting( 'shortcode' ); 147 } 148 149 /** 150 * Render shortcode widget output in the editor. 151 * 152 * Written as a Backbone JavaScript template and used to generate the live preview. 153 * 154 * @since 2.9.0 155 * @access protected 156 */ 157 protected function content_template() {} 158 }