PluginProbe
Elementor Website Builder – more than just a page builder / 4.2.2
Elementor Website Builder – more than just a page builder v4.2.2
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
← All changes | modules/components/module.php +22 -0 4.0.74.2.2 View file →
@@ -15,8 +15,9 @@
15 15 use Elementor\Modules\Components\Transformers\Overridable_Transformer;
16 16 use Elementor\Core\Base\Document;
17 17 use Elementor\Modules\Components\PropTypes\Override_Prop_Type;
18 18 use Elementor\Modules\Components\Transformers\Override_Transformer;
19 +use Elementor\Modules\Components\Widgets\Component_Instance;
19 20
20 21 if ( ! defined( 'ABSPATH' ) ) {
21 22 exit; // Exit if accessed directly.
22 23 }
@@ -43,8 +44,9 @@
43 44 add_action( 'elementor/documents/register', fn ( $documents_manager ) => $this->register_document_type( $documents_manager ) );
44 45 add_action( 'elementor/document/before_save', fn( Document $document, array $data ) => $this->validate_circular_dependencies( $document, $data ), 10, 2 );
45 46 add_action( 'elementor/document/after_save', fn( Document $document, array $data ) => $this->set_component_overridable_props( $document, $data ), 10, 2 );
46 47 add_filter( 'elementor/global_classes/additional_post_types', fn( $post_types ) => array_merge( $post_types, [ Component_Document::TYPE ] ) );
48 + add_filter( 'elementor/utils/find_element_recursive/inner_elements', fn( array $inner_elements, array $element_data ) => $this->get_inner_elements_for_search( $inner_elements, $element_data ), 10, 2 );
47 49
48 50 add_action( 'elementor/atomic-widgets/settings/transformers/register', fn ( $transformers ) => $this->register_settings_transformers( $transformers ) );
49 51 add_action( 'elementor/document/after_migrate', fn( Document $document, array $data ) => $this->after_component_migrate( $document, $data ), 10, 2 );
50 52
@@ -151,6 +153,26 @@
151 153 return;
152 154 }
153 155
154 156 $document->align_overridable_props_with_elements();
157 + }
158 +
159 + private function get_inner_elements_for_search( array $inner_elements, array $element_data ): array {
160 + if ( ! $this->is_component_instance( $element_data ) ) {
161 + return $inner_elements;
162 + }
163 +
164 + $element_instance = Plugin::$instance->elements_manager->create_element_instance( $element_data );
165 +
166 + if ( ! $element_instance instanceof Component_Instance ) {
167 + return [];
168 + }
169 +
170 + return $element_instance->get_inner_elements_data_for_search();
171 + }
172 +
173 + private function is_component_instance( array $element_data ): bool {
174 + return isset( $element_data['elType'], $element_data['widgetType'] )
175 + && 'widget' === $element_data['elType']
176 + && Component_Instance::get_element_type() === $element_data['widgetType'];
155 177 }
156 178 }