Widget::get_shortcode_object( $settings ); $query_args = $shortcode->parse_query_args(); unset( $query_args['fields'] ); return $query_args; } private function adjust_setting_for_product_renderer( $widget ) { $settings = $widget->get_settings_for_display(); $query_name = $widget->get_query_name(); $unique_query_settings = array_filter( $settings, function( $key ) use ( $query_name ) { return 0 === strpos( $key, $query_name ); }, ARRAY_FILTER_USE_KEY ); $query_settings = []; foreach ( $unique_query_settings as $key => $value ) { $query_settings[ 'query' . str_replace( $query_name, '', $key ) ] = $value; } $settings = array_merge( $settings, $query_settings ); if ( isset( $settings['posts_per_page'] ) && isset( $settings['columns'] ) ) { $settings['rows'] = ceil( $settings['posts_per_page'] / $settings['columns'] ); } $settings['paginate'] = 'yes'; $settings['allow_order'] = 'no'; $settings['show_result_count'] = 'no'; $settings['query_fields'] = false; return $settings; } /** * @param $post_id * @return bool */ private function is_source_set_to_products( $post_id ) { return 'product' === get_post_meta( $post_id, '_elementor_source', true ); } /** * @param array $config * @return array */ private function add_woocommerce_widgets_to_recommended( array $config ) { foreach ( static::RECOMMENDED_POSTS_WIDGET_NAMES as $recommended_posts_widget_name ) { $config['panel']['widgets_settings'][ $recommended_posts_widget_name ] = [ 'categories' => [ 'recommended' ], 'show_in_panel' => true, ]; } return $config; } private function hide_woocommerce_widgets_in_loop_document( array $config ) { $config['panel']['widgets_settings']['woocommerce-product-images'] = [ 'show_in_panel' => false, ]; return $config; } }