[ 'rtsb_abandoned_cart_recovery_action', 'rtsb_send_abandoned_cart_emails', ], 'currency_switcher' => [ 'update_exchange_rates_hourly', ], ]; if ( ! isset( $schedule[ $block_id ] ) ) { return; } if ( ! isset( $rawOptions['active'] ) ) { return; } if ( 'on' === $rawOptions['active'] ) { return; } // CLear All Custom Schedule If module disabled. foreach ( $schedule[ $block_id ] as $hook ) { wp_clear_scheduled_hook( $hook ); } } /** * @param boolen $has_orders Order exist or not. * * @return void */ public static function after_account_orders( $has_orders ) { if ( ! $has_orders ) { echo ''; } } /** * @param boolen $has_orders Order exist or not. * * @return void */ public static function before_account_orders( $has_orders ) { if ( ! $has_orders ) { echo '
'; } } /** * @return void */ public static function woocommerce_checkout_coupon_form() { echo '
'; woocommerce_checkout_coupon_form(); echo '
'; } /** * @return void */ public static function woocommerce_checkout_login_form() { echo '
'; woocommerce_checkout_login_form(); echo '
'; } /** * @return void */ public static function cart_is_empty() { echo '
'; wc_empty_cart_message(); echo '
'; } /** * @param int $post_id Post Ids. * @param object $post Post Object. * * @return void */ public static function deleted_post( $post_id, $post ) { if ( BuilderFns::$post_type_tb !== $post->post_type ) { return; } $options = BuilderFns::option_name_for_specific_product_set_default( $post_id ); TemplateSettings::instance()->delete_option( $options ); $template_options = BuilderFns::option_name_by_template_id( $post_id ); TemplateSettings::instance()->delete_option( $template_options ); $archive_options = BuilderFns::archive_option_name_by_template_id( $post_id ); TemplateSettings::instance()->delete_option( $archive_options ); $category_options = BuilderFns::option_name_for_specific_category_set_default( $post_id ); TemplateSettings::instance()->delete_option( $category_options ); $selected_category_options = BuilderFns::archive_option_name_by_template_id( $post_id ); TemplateSettings::instance()->delete_option( $selected_category_options ); // Delete Data From Options. $options_product_selected_cat = BuilderFns::option_name_product_page_selected_cat( $post_id ); $cat_list = TemplateSettings::instance()->get_option( $options_product_selected_cat ); if ( ! empty( $cat_list ) ) { foreach ( $cat_list as $old_slug ) { $OldcatList = get_term_by( 'slug', $old_slug, 'product_cat' ); if ( ! empty( $OldcatList ) && ! is_wp_error( $OldcatList ) ) { delete_term_meta( $OldcatList->term_id, BuilderFns::$categories_product_page_template, $post_id ); } } } TemplateSettings::instance()->delete_option( $options_product_selected_cat ); $set_default_option = BuilderFns::option_name_product_page_specific_cat_set_default( $post_id ); TemplateSettings::instance()->delete_option( $set_default_option ); // Tags Remove. $options_product_selected_tag = BuilderFns::option_name_product_page_selected_tag( $post_id ); $tag_list = TemplateSettings::instance()->get_option( $options_product_selected_tag ); if ( ! empty( $tag_list ) ) { foreach ( $tag_list as $old_slug ) { $OldTagList = get_term_by( 'slug', $old_slug, 'product_tag' ); if ( ! empty( $OldTagList ) && ! is_wp_error( $OldTagList ) ) { delete_term_meta( $OldTagList->term_id, BuilderFns::$tags_product_page_template, $post_id ); } } } TemplateSettings::instance()->delete_option( $options_product_selected_tag ); // Tag Set Default Option. $tag_set_default_option = BuilderFns::option_name_product_page_specific_tag_set_default( $post_id ); TemplateSettings::instance()->delete_option( $tag_set_default_option ); global $wpdb; // Prepare and execute the SQL query. $sql = $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE meta_key = %s AND meta_value = %d", BuilderFns::$view_template_for_products_meta, $post_id ); $wpdb->query( $sql ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching // Prepare and execute the SQL query. $sql = $wpdb->prepare( "DELETE FROM $wpdb->termmeta WHERE meta_key = %s AND meta_value = %d", BuilderFns::$view_template_for_archive_meta, $post_id ); $wpdb->query( $sql ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching } /** * Meta tags for social sharing. * * @return void */ public static function shopbuilder_share() { $generalList = GeneralList::instance()->get_data(); if ( empty( $generalList['social_share']['share_platforms_to_product_page'] ) || 'on' !== $generalList['social_share']['share_platforms_to_product_page'] || empty( $generalList['social_share']['share_platforms'] ) ) { return; } $share_platforms = []; foreach ( $generalList['social_share']['share_platforms'] as $value ) { $share_platforms[ $value ] = [ 'share_items' => $value, 'share_text' => ucwords( $value ), ]; } $settings['share_platforms'] = $share_platforms; $settings['layout'] = ! empty( $generalList['social_share']['share_icon_layout'] ) ? $generalList['social_share']['share_icon_layout'] : 1; $settings['show_share_icon'] = 1; /** * Implement Later ! empty( $generalList['social_share']['share_icon_show_to_product_page'] ) && 'on' === $generalList['social_share']['share_icon_show_to_product_page']; */ Fns::print_html( Render::instance()->social_share_view( 'elementor/general/social-share', $settings ), true ); } /** * Meta tags for social sharing. * * @return void */ public static function og_metatags_for_sharing() { global $post; if ( ! isset( $post ) ) { return; } if ( ! is_singular( 'product' ) ) { return; } Fns::print_html( '', true ); Fns::print_html( '', true ); Fns::print_html( '', true ); Fns::print_html( '' ); $attachment = get_the_post_thumbnail_url(); if ( ! empty( $attachment ) ) { Fns::print_html( '', true ); } Fns::print_html( '', true ); Fns::print_html( '', true ); } /** * Render image. * * @param array $args Image args. * * @return void */ public static function render_image( $args ) { if ( $args['image_link'] ) { $aria_label = esc_attr( /* translators: Product Name */ sprintf( __( 'Image link for Product: %s', 'shopbuilder' ), $args['title'] ) ); ?>
'; Fns::get_product_image( $args['img_html'], $args['hover_img_html'] ); echo ''; } } /** * Modify WooCommerce query arguments for product retrieval. * * @param array $settings The settings array. * * @return void */ public static function modify_wc_query_args( $settings ) { if ( ( isset( $settings['tax_relation'] ) && 'OR' === $settings['tax_relation'] ) || ( isset( $settings['relation'] ) && 'OR' === $settings['relation'] ) ) { add_filter( 'woocommerce_product_data_store_cpt_get_products_query', [ FilterHooks::class, 'extra_query_args_or' ], 10, 2 ); } if ( ( isset( $settings['tax_relation'] ) && 'AND' === $settings['tax_relation'] ) || ( isset( $settings['relation'] ) && 'AND' === $settings['relation'] ) ) { add_filter( 'woocommerce_product_data_store_cpt_get_products_query', [ FilterHooks::class, 'extra_query_args_and' ], 10, 2 ); } if ( 'yes' === get_option( 'woocommerce_hide_out_of_stock_items' ) ) { add_filter( 'woocommerce_product_data_store_cpt_get_products_query', [ FilterHooks::class, 'extra_query_args_outofstock' ] ); } } /** * Reset WooCommerce query arguments for product retrieval. * * @param array $settings The settings array. * * @return void */ public static function reset_wc_query_args( $settings ) { if ( ( isset( $settings['tax_relation'] ) && 'OR' === $settings['tax_relation'] ) || ( isset( $settings['relation'] ) && 'OR' === $settings['relation'] ) ) { remove_filter( 'woocommerce_product_data_store_cpt_get_products_query', [ FilterHooks::class, 'extra_query_args_or' ] ); } if ( ( isset( $settings['tax_relation'] ) && 'AND' === $settings['tax_relation'] ) || ( isset( $settings['relation'] ) && 'AND' === $settings['relation'] ) ) { remove_filter( 'woocommerce_product_data_store_cpt_get_products_query', [ FilterHooks::class, 'extra_query_args_and' ] ); } if ( 'yes' === get_option( 'woocommerce_hide_out_of_stock_items' ) ) { remove_filter( 'woocommerce_product_data_store_cpt_get_products_query', [ FilterHooks::class, 'extra_query_args_outofstock' ] ); } } /** * Display a filter header. * * @param array $settings The settings. * * @return void */ public static function default_filter_header( $settings ) { if ( empty( $settings['show_filter_header'] ) && empty( $settings['filter_header_text'] ) ) { return; } $wrapper_class = 'rtsb-default-filter-header '; ?>

! empty( $settings['search_title'] ) ? $settings['search_title'] : '', 'show_icon' => ! empty( $settings['show_search_title_icon'] ), 'icon' => ! empty( $settings['filter_search_title_icon'] ) ? $settings['filter_search_title_icon'] : [], ]; $placeholder = ! empty( $settings['search_placeholder'] ) ? $settings['search_placeholder'] : ''; $btn_icon = ! empty( $settings['search_title_icon'] ) ? $settings['search_title_icon'] : []; $wrapper_class = 'rtsb-default-filter-search rtsb-default-product-search'; $unique_id = substr( uniqid(), -6 ); $search_term = isset( $_REQUEST['s'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['s'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended ?>
set( 'post__in', ! empty( $on_sale_products ) ? $on_sale_products : [ 0 ] ); } elseif ( 'regular' === $onsale_filter ) { $query->set( 'post__not_in', $on_sale_products ); } // Taxonomy filters (product_cat, product_tag, product_brand) from URL. $tax_query = (array) $query->get( 'tax_query' ); $taxonomy_map = [ 'product_cat' => 'product_cat', 'product_tag' => 'product_tag', 'product_brand' => 'product_brand', ]; foreach ( $taxonomy_map as $param => $taxonomy ) { if ( empty( $_GET[ $param ] ) || ! taxonomy_exists( $taxonomy ) ) { continue; } $raw_values = wc_clean( wp_unslash( $_GET[ $param ] ) ); $slugs = array_filter( array_map( 'urldecode', explode( ',', $raw_values ) ) ); if ( empty( $slugs ) ) { continue; } $tax_query[] = [ 'taxonomy' => $taxonomy, 'field' => 'slug', 'terms' => $slugs, 'operator' => 'IN', ]; } // Rating filter (rating_filter=4,5). if ( ! empty( $_GET['rating_filter'] ) ) { $raw_ratings = wc_clean( wp_unslash( $_GET['rating_filter'] ) ); $ratings = array_filter( array_map( 'intval', explode( ',', $raw_ratings ) ) ); if ( ! empty( $ratings ) ) { $rating_terms = []; foreach ( $ratings as $rating ) { $rating_terms[] = 'rated-' . $rating; } $tax_query[] = [ 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => $rating_terms, 'operator' => 'IN', ]; } } if ( ! empty( $tax_query ) ) { $query->set( 'tax_query', $tax_query ); } // phpcs:enable WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized return $query; } /** * Delete cache when switching to another theme. * * @return void */ public static function clear_cache() { Cache::clear_all_cache(); } }