start_controls_section( 'section_container_link', [ 'label' => __( 'Container Link', 'addon-elementor-container-link' ), 'tab' => \Elementor\Controls_Manager::TAB_LAYOUT, ] ); $element->add_control( 'container_link', [ 'label' => __( 'Link', 'addon-elementor-container-link' ), 'type' => \Elementor\Controls_Manager::URL, 'placeholder' => __( 'https://your-link.com', 'addon-elementor-container-link' ), 'dynamic' => [ 'active' => true ], 'show_external' => true, 'default' => [ 'url' => '', 'is_external' => false, 'nofollow' => false, ], ] ); $element->end_controls_section(); } // Save and retrieve the link value add_action( 'elementor/frontend/section/before_render', 'fr_render_container_link' ); add_action( 'elementor/frontend/container/before_render', 'fr_render_container_link' ); function fr_render_container_link( $element ) { // Using get_settings_for_display() is safer as it processes dynamic tags. $settings = $element->get_settings_for_display(); // Check if the link settings and the URL itself exist. if ( ! empty( $settings['container_link'] ) && ! empty( $settings['container_link']['url'] ) ) { $link_data = $settings['container_link']; $link_url = $link_data['url']; $is_external = ! empty( $link_data['is_external'] ); // Check if 'Open in new window' is ticked. ?>