documents->get( $page_id ); $settings = []; if ( $document ) { $elements = Plugin::instance()->documents->get( $page_id )->get_elements_data(); $widget_data = $this->find_element_recursive( $elements, $widget_id ); if(!empty($widget_data)) { $widget = Plugin::instance()->elements_manager->create_element_instance( $widget_data ); if ( $widget ) { $settings = $widget->get_settings_for_display(); } } } return $settings; } /** * It store data temporarily for 5 mins by default * * @param $name * @param $data * @param int $time time in seconds. Default is 300s = 5 minutes * * @return bool it returns true if the data saved, otherwise, false returned. */ public function eael_set_transient( $name, $data, $time = 300 ) { $time = !empty( $time ) ? (int) $time : ( 5 * MINUTE_IN_SECONDS ); return set_transient( $name, $data, $time ); } public function print_load_more_button($settings, $args, $plugin_type = 'free') { //@TODO; not all widget's settings contain posts_per_page name exactly, so adjust the settings before passing here or run a migration and make all settings key generalize for load more feature. if (!isset($this->page_id)) { if ( Plugin::$instance->documents->get_current() ) { $this->page_id = Plugin::$instance->documents->get_current()->get_main_id(); }else{ $this->page_id = null; } } $max_page = empty( $args['max_page'] ) ? false : $args['max_page']; unset( $args['max_page'] ); $this->add_render_attribute('load-more', [ 'class' => "eael-load-more-button", 'id' => "eael-load-more-btn-" . $this->get_id(), 'data-widget-id' => $this->get_id(), 'data-widget' => $this->get_id(), 'data-page-id' => $this->page_id, 'data-nonce' => wp_create_nonce( 'load_more' ), 'data-template' => json_encode([ 'dir' => $plugin_type, 'file_name' => $settings['loadable_file_name'], 'name' => $this->process_directory_name() ], 1), 'data-class' => get_class( $this ), 'data-layout' => isset($settings['layout_mode']) ? $settings['layout_mode'] : "", 'data-page' => 1, 'data-args' => http_build_query( $args ), ]); if ( $max_page ) { $this->add_render_attribute( 'load-more', [ 'data-max-page' => $max_page ] ); } if ( ('true' == $settings['show_load_more'] || 1 == $settings['show_load_more'] || 'yes' == $settings['show_load_more']) && $args['posts_per_page'] != '-1' ) { ?>
version, '3.0.0', '>=' ) ) { if ( current_theme_supports( 'wc-product-gallery-zoom' ) ) { wp_enqueue_script( 'zoom' ); } if ( current_theme_supports( 'wc-product-gallery-slider' ) ) { wp_enqueue_script( 'flexslider' ); } if ( current_theme_supports( 'wc-product-gallery-lightbox' ) ) { wp_enqueue_script( 'photoswipe-ui-default' ); wp_enqueue_style( 'photoswipe-default-skin' ); if ( has_action( 'wp_footer', 'woocommerce_photoswipe' ) === false ) { add_action( 'wp_footer', 'woocommerce_photoswipe', 15 ); } } wp_enqueue_script( 'wc-add-to-cart-variation' ); wp_enqueue_script( 'wc-single-product' ); } } /** * Rating Markup */ public function eael_rating_markup( $html, $rating, $count ) { if ( 0 == $rating ) { $html = ''; } return $html; } public function change_add_woo_checkout_update_order_reviewto_cart_text( $add_to_cart_text ) { add_filter( 'woocommerce_product_add_to_cart_text', function ( $default ) use ( $add_to_cart_text ) { global $product; switch ( $product->get_type() ) { case 'external': return $add_to_cart_text[ 'add_to_cart_external_product_button_text' ]; break; case 'grouped': return $add_to_cart_text[ 'add_to_cart_grouped_product_button_text' ]; break; case 'simple': return $add_to_cart_text[ 'add_to_cart_simple_product_button_text' ]; break; case 'variable': return $add_to_cart_text[ 'add_to_cart_variable_product_button_text' ]; break; default: return $default; } } ); } public function print_template_views(){ $button_test = ( HelperClass::get_local_plugin_data( 'templately/templately.php' ) === false )?'Install Templately':'Activate Templately '; ?> theme_root, $current_theme->stylesheet ); } /** * @param string $tag * @param string $function_to_remove * @param int|string $priority */ public function eael_forcefully_remove_action( $tag, $function_to_remove, $priority ) { global $wp_filter; if ( isset( $wp_filter[ $tag ][ $priority ] ) && is_array( $wp_filter[ $tag ][ $priority ] ) ) { foreach ( $wp_filter[ $tag ][ $priority ] as $callback_function => $registration ) { if ( strlen( $callback_function ) > 32 && strpos( $callback_function, $function_to_remove, 32 ) !== false || $callback_function === $function_to_remove ) { remove_action( $tag, $callback_function, $priority ); break; } } } } /** * eael_wpml_template_translation * @param $id * @return mixed|void */ public function eael_wpml_template_translation($id){ $postType = get_post_type( $id ); if ( 'elementor_library' === $postType ) { return apply_filters( 'wpml_object_id', $id, $postType, true ); } return $id; } /** * eael_sanitize_template_param * Removes special characters that are illegal in filenames * * @param array $template_info * * @access public * @return array * @since 5.0.4 */ public function eael_sanitize_template_param( $template_info ){ $template_info = array_map( 'sanitize_text_field', $template_info ); return array_map( 'sanitize_file_name', $template_info ); } /** * sanitize_taxonomy_data * Sanitize all value for tax query * * @param array $tax_list taxonomy param list * * @access protected * @return array|array[]|string[] * @since 5.0.4 */ protected function sanitize_taxonomy_data( $tax_list ){ return array_map( function ( $param ) { return is_array( $param ) ? array_map( 'sanitize_text_field', $param ) : sanitize_text_field( $param ); }, $tax_list ); } /** * eael_clear_widget_cache_data * Remove cache from transient which contains widget data * * @access public * @return array * @since 5.0.7 */ public function eael_clear_widget_cache_data() { global $wpdb; check_ajax_referer( 'essential-addons-elementor', 'security' ); $ac_name = sanitize_text_field( $_POST['ac_name'] ); $hastag = sanitize_text_field( $_POST['hastag'] ); $c_key = sanitize_text_field( $_POST['c_key'] ); $c_secret = sanitize_text_field( $_POST['c_secret'] ); $key_pattern = '_transient_' . $ac_name . '%' . md5( $hastag . $c_key . $c_secret ) . '_tf_cache'; $sql = "SELECT `option_name` AS `name` FROM $wpdb->options WHERE `option_name` LIKE '$key_pattern' ORDER BY `option_name`"; $results = $wpdb->get_results( $sql ); foreach ( $results as $transient ) { $cache_key = substr( $transient->name, 11 ); delete_transient( $cache_key ); } wp_send_json_success(); } public function promotion_message_on_admin_screen() { ?> id == 'toplevel_page_eael-settings' ) { remove_all_actions( 'user_admin_notices' ); remove_all_actions( 'admin_notices' ); if ( get_option( 'eael_admin_promotion' ) < self::EAEL_PROMOTION_FLAG ) { add_action( 'admin_notices', array( $this, 'promotion_message_on_admin_screen' ) ); } } } /** * eael_show_admin_menu_notice * * Update flag if user visit Essential Addons setting page only first time * @return void * @since 5.1.0 */ public function eael_show_admin_menu_notice() { if ( get_option( 'eael_admin_menu_notice' ) < self::EAEL_ADMIN_MENU_FLAG ) { update_option( 'eael_admin_menu_notice',self::EAEL_ADMIN_MENU_FLAG,'no' ); } } }