HEX
Server: LiteSpeed
System: Linux venus 5.15.0-153-generic #163-Ubuntu SMP Thu Aug 7 16:37:18 UTC 2025 x86_64
User: axxoncom (1007)
PHP: 8.3.19
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/axxoncom/domains/gishope.us/private_html/wp-content/themes/expertly/inc/woocommerce.php
<?php
/**
 * WooCommerce compatibility functions.
 *
 * @package Expertly
 */

if ( class_exists( 'WooCommerce' ) ) {

	/**
	 * Add support WooCommerce.
	 */
	add_theme_support( 'woocommerce' );
	add_theme_support( 'wc-product-gallery-zoom' );
	add_theme_support( 'wc-product-gallery-lightbox' );
	add_theme_support( 'wc-product-gallery-slider' );

	/**
	 * Remove footer posts for WooCommerce.
	 */
	add_action( 'template_redirect', function() {
		if ( is_woocommerce() || is_product_category() || is_product_tag() || is_cart() || is_checkout() ) {
			remove_action( 'csco_footer_before', 'csco_footer_posts' );
		}
	});

	/**
	 * Disable shop page title.
	 */
	add_filter( 'woocommerce_show_page_title', function( $default ) {
		return is_shop() ? false : $default;
	} );

	/**
	 * Add css selectors to output of kirki.
	 */
	add_filter( 'csco_color_primary', function( $rules ) {
		array_push( $rules, array(
			'element'  => csco_implode( array(
				'.woocommerce div.product form.cart button[name="add-to-cart"]',
				'.woocommerce div.product form.cart button[type="submit"]',
				'.woocommerce .widget_shopping_cart .buttons a',
				'.woocommerce .wc-proceed-to-checkout a.checkout-button.alt',
				'.woocommerce ul.products li.product .onsale',
				'.woocommerce #respond input#submit',
				'.woocommerce span.onsale',
				'.woocommerce-cart .return-to-shop a.button',
				'.woocommerce-checkout #payment .button.alt',
			) ),
			'property' => 'background-color',
		) );
		return $rules;
	} );

	add_filter( 'csco_color_primary', function( $rules ) {
		array_push( $rules, array(
			'element'  => csco_implode( array(
				'.woocommerce .woocommerce-pagination .page-numbers li > a:hover',
				'.woocommerce li.product .price a:hover',
				'.woocommerce .star-rating',
			) ),
			'property' => 'color',
		) );
		return $rules;
	} );

	add_filter( 'csco_font_headings', function( $rules ) {
		array_push( $rules, array(
			'element' => csco_implode( array(
				'.woocommerce ul.cart_list li a',
				'.woocommerce ul.product_list_widget li a',
				'.woocommerce div.product .woocommerce-tabs ul.tabs li',
				'.woocommerce.widget_products span.product-title',
				'.woocommerce.widget_recently_viewed_products span.product-title',
				'.woocommerce.widget_recent_reviews span.product-title',
				'.woocommerce.widget_top_rated_products span.product-title',
				'.woocommerce-loop-product__title',
				'.woocommerce table.shop_table th',
				'.woocommerce-tabs .panel h2',
				'.related.products > h2',
				'.upsells.products > h2',
			) ),
		) );
		return $rules;
	} );

	add_filter( 'csco_font_secondary', function( $rules ) {
		array_push( $rules, array(
			'element' => csco_implode( array(
				'.nav-cart .cart-quantity',
				'.widget_shopping_cart .quantity',
				'.woocommerce .widget_layered_nav_filters ul li a',
				'.woocommerce.widget_layered_nav_filters ul li a',
				'.woocommerce.widget_products ul.product_list_widget li',
				'.woocommerce.widget_recently_viewed_products ul.product_list_widget li',
				'.woocommerce.widget_recent_reviews ul.product_list_widget li',
				'.woocommerce.widget_top_rated_products ul.product_list_widget li',
				'.woocommerce .widget_price_filter .price_slider_amount',
				'.woocommerce .woocommerce-result-count',
				'.woocommerce ul.products li.product .price',
				'.woocommerce .woocommerce-breadcrumb',
				'.woocommerce .product_meta',
				'.woocommerce span.onsale',
				'.woocommerce-page .woocommerce-breadcrumb',
			) ),
		) );
		return $rules;
	} );

	add_filter( 'csco_font_primary', function( $rules ) {
		array_push( $rules, array(
			'element' => csco_implode( array(
				'.woocommerce #respond input#submit',
				'.woocommerce a.button',
				'.woocommerce button.button',
				'.woocommerce input.button',
				'.woocommerce #respond input#submit.alt',
				'.woocommerce a.button.alt',
				'.woocommerce button.button.alt',
				'.woocommerce input.button.alt',
				'.woocommerce-pagination',
				'.woocommerce nav.woocommerce-pagination .page-numbers li > a',
				'.woocommerce ul.products li.product .button',
				'.woocommerce li.product .price',
			) ),
		) );
		return $rules;
	} );

	add_filter( 'csco_font_post_content', function( $rules ) {
		array_push( $rules, array(
			'element' => csco_implode( array(
				'.woocommerce-tabs .entry-content',
			) ),
		) );
		return $rules;
	} );

	add_filter( 'csco_font_title_block', function( $rules ) {
		array_push( $rules, array(
			'element' => csco_implode( array(
				'.woocommerce .woocommerce-tabs .panel h2',
				'.woocommerce .related.products > h2',
				'.woocommerce .upsells.products > h2 ',
				'.woocommerce ul.order_details li',
				'.woocommerce-order-details .woocommerce-order-details__title',
				'.woocommerce-customer-details .woocommerce-column__title',
				'.woocommerce-account .addresses .title h3',
				'.woocommerce-checkout h3',
				'.woocommerce-EditAccountForm legend',
				'.cross-sells > h2',
				'.cart_totals > h2',
			) ),
		) );
		return $rules;
	} );


	add_filter( 'csco_misc_border_radius', function( $rules ) {
		array_push( $rules, array(
			'element'  => csco_implode( array(
				'.widget_product_search .woocommerce-product-search',
				'.widget_product_search .woocommerce-product-search input[type="search"]',
				'.woocommerce-checkout input[id="coupon_code"]',
				'.woocommerce-cart input[id="coupon_code"]',
				'.woocommerce div.product form.cart input.qty',
				'.woocommerce #respond input#submit',
				'.woocommerce a.button',
				'.woocommerce button.button',
				'.woocommerce input.button',
				'.woocommerce #respond input#submit.alt',
				'.woocommerce a.button.alt',
				'.woocommerce button.button.alt',
				'.woocommerce input.button.alt',
			) ),
			'property' => 'border-radius',
		) );
		return $rules;
	} );

	/**
	 * Add fields to WooCommerce.
	 */
	function csco_wc_add_fields_customizer() {
		CSCO_Kirki::add_section(
			'woocommerce_common_settings',
			array(
				'title'    => esc_html__( 'Common Settings', 'expertly' ),
				'panel'    => 'woocommerce',
				'priority' => 1,
			)
		);

		CSCO_Kirki::add_field(
			'csco_theme_mod',
			array(
				'type'     => 'radio',
				'settings' => 'woocommerce_default_page_sidebar',
				'label'    => esc_html__( 'Default Page Sidebar', 'expertly' ),
				'section'  => 'woocommerce_common_settings',
				'default'  => 'disabled',
				'priority' => 10,
				'choices'  => array(
					'right'    => esc_html__( 'Right Sidebar', 'expertly' ),
					'left'     => esc_html__( 'Left Sidebar', 'expertly' ),
					'disabled' => esc_html__( 'No Sidebar', 'expertly' ),
				),
			)
		);

		CSCO_Kirki::add_field(
			'csco_theme_mod', array(
				'type'     => 'checkbox',
				'settings' => 'woocommerce_product_catalog_cart',
				'label'    => esc_html__( 'Display add to cart buttom', 'expertly' ),
				'section'  => 'woocommerce_product_catalog',
				'default'  => false,
				'priority' => 10,
			)
		);

		CSCO_Kirki::add_section(
			'woocommerce_product_page', array(
				'title'    => esc_html__( 'Product Page', 'expertly' ),
				'panel'    => 'woocommerce',
				'priority' => 30,
			)
		);

		CSCO_Kirki::add_field(
			'csco_theme_mod', array(
				'type'     => 'radio',
				'settings' => 'woocommerce_product_page_sidebar',
				'label'    => esc_html__( 'Default Sidebar', 'expertly' ),
				'section'  => 'woocommerce_product_page',
				'default'  => 'right',
				'priority' => 5,
				'choices'  => array(
					'right'    => esc_attr__( 'Right Sidebar', 'expertly' ),
					'left'     => esc_attr__( 'Left Sidebar', 'expertly' ),
					'disabled' => esc_attr__( 'No Sidebar', 'expertly' ),
				),
			)
		);

		CSCO_Kirki::add_section(
			'woocommerce_product_misc', array(
				'title'    => esc_html__( 'Miscellaneous', 'expertly' ),
				'panel'    => 'woocommerce',
				'priority' => 50,
			)
		);

		CSCO_Kirki::add_field(
			'csco_theme_mod', array(
				'type'     => 'checkbox',
				'settings' => 'woocommerce_header_hide_icon',
				'label'    => esc_html__( 'Hide Cart Icon in Header', 'expertly' ),
				'section'  => 'woocommerce_product_misc',
				'default'  => false,
				'priority' => 10,
			)
		);
	}
	add_action( 'init', 'csco_wc_add_fields_customizer' );

	/**
	 * Wrap product summary.
	 */
	function csco_wc_wrap_product_summary() {
		if ( 'woocommerce_before_single_product_summary' === current_filter() ) {
			echo '<div class="woocommerce-wrap-product-summary">';
		} else {
			echo '</div>';
		}
	}
	add_action( 'woocommerce_before_single_product_summary', 'csco_wc_wrap_product_summary', 1 );
	add_action( 'woocommerce_single_product_summary', 'csco_wc_wrap_product_summary', 9999 );

	/**
	 * Woocommerce loop add to cart
	 */
	function csco_wc_shop_loop_item() {
		if ( ! get_theme_mod( 'woocommerce_product_catalog_cart', false ) ) {
			remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
		}
	}
	add_action( 'template_redirect', 'csco_wc_shop_loop_item' );

	/**
	 * Woocommerce gallery image width
	 */
	function csco_wc_gallery_thumbnail_image_width() {
		add_theme_support( 'woocommerce', array( 'gallery_thumbnail_image_width' => 300 ) );
	}
	add_action( 'template_redirect', 'csco_wc_gallery_thumbnail_image_width' );

	/**
	 * Enqueues WooCommerce assets.
	 */
	function csco_wc_enqueue_scripts() {
		$theme = wp_get_theme();

		$version = $theme->get( 'Version' );

		// Register WooCommerce styles.
		wp_register_style( 'csco_css_wc', csco_style( get_template_directory_uri() . '/css/woocommerce.css' ), array(), $version );

		// Enqueue WooCommerce styles.
		wp_enqueue_style( 'csco_css_wc' );

		// Add RTL support.
		wp_style_add_data( 'csco_css_wc', 'rtl', 'replace' );
	}
	add_action( 'wp_enqueue_scripts', 'csco_wc_enqueue_scripts' );

	/**
	 * PinIt exclude selectors
	 *
	 * @param string $selectors List selectors.
	 */
	function csco_wc_pinit_exclude_selectors( $selectors ) {
		$selectors[] = '.woocommerce .products img';
		$selectors[] = '.woocommerce-product-gallery img';
		$selectors[] = '.woocommerce-cart-form .product-thumbnail img';

		return $selectors;
	}
	add_filter( 'powerkit_pinit_exclude_selectors', 'csco_wc_pinit_exclude_selectors' );

	/**
	 * Get Page Sidebar
	 *
	 * @param string $sidebar Page sidebar.
	 */
	function csco_wc_get_page_sidebar( $sidebar ) {

		if ( is_woocommerce() || is_product_category() || is_product_tag() || is_cart() || is_checkout() || is_account_page() ) {

			global $post;

			if ( is_shop() ) {
				$page_id = wc_get_page_id( 'shop' );
			} elseif ( is_product() || is_page() ) {
				$page_id = $post->ID;
			} else {
				$page_id = 0;
			}

			// Get sidebar for current post.
			$sidebar = get_post_meta( $page_id, 'csco_singular_sidebar', true );

			if ( ! $sidebar || 'default' === $sidebar ) {

				$sidebar = get_theme_mod( 'woocommerce_default_page_sidebar', 'disabled' );

				if ( is_product() ) {
					$sidebar = get_theme_mod( 'woocommerce_product_page_sidebar', 'right' );
				}
			}
		}

		return $sidebar;

	}
	add_filter( 'csco_page_sidebar', 'csco_wc_get_page_sidebar' );

	/**
	 * Register WooCommerce Sidebar
	 */
	function csco_wc_widgets_init() {

		$tag = apply_filters( 'csco_section_title_tag', 'h5' );

		register_sidebar(
			array(
				'name'          => esc_html__( 'WooCommerce', 'expertly' ),
				'id'            => 'sidebar-woocommerce',
				'before_widget' => '<div class="widget %1$s %2$s">',
				'after_widget'  => '</div>',
				'before_title'  => '<' . $tag . ' class="title-block title-widget">',
				'after_title'   => '</' . $tag . '>',
			)
		);
	}
	add_action( 'widgets_init', 'csco_wc_widgets_init' );

	/**
	 * Overwrite Default Sidebar
	 *
	 * @param string $sidebar Sidebar slug.
	 */
	function csco_wc_sidebar( $sidebar ) {
		if ( is_woocommerce() || is_cart() || is_checkout() || is_account_page() ) {
			return 'sidebar-woocommerce';
		}
		return $sidebar;
	}

	add_filter( 'csco_sidebar', 'csco_wc_sidebar' );

	/**
	 * Add cart to header
	 */
	function csco_wc_nav_cart() {
		if ( ! get_theme_mod( 'woocommerce_header_hide_icon', false ) ) {

			$quantity = intval( WC()->cart->get_cart_contents_count() );
			?>
			<a class="nav-cart" href="<?php echo esc_url( wc_get_cart_url() ); ?>" title="<?php esc_html_e( 'View your shopping cart', 'expertly' ); ?>">
				<i class="cs-icon cs-icon-bag"></i>
				<?php if ( $quantity ) { ?>
					<span class="cart-quantity"><?php echo esc_html( $quantity ); ?></span>
				<?php } ?>
			</a>
			<?php
		}
	}
	add_action( 'csco_navbar_content_end', 'csco_wc_nav_cart', 15 );


	/**
	 * Add location for update nav cart
	 *
	 * @param array $fragments The cart fragments.
	 */
	function csco_wc_update_nav_cart( $fragments ) {

		ob_start();

		csco_wc_nav_cart();

		$fragments['a.nav-cart'] = ob_get_clean();

		return $fragments;

	}
	add_filter( 'woocommerce_add_to_cart_fragments', 'csco_wc_update_nav_cart', 10, 1 );

	/**
	 * Toc exclude selectors.
	 *
	 * @param string $selectors The selectors.
	 */
	function csco_wc_toc_exclude( $selectors ) {
		$selectors .= '|.woocommerce-loop-product__title';

		return $selectors;
	}
	add_filter( 'pk_toc_exclude', 'csco_wc_toc_exclude' );

	/**
	 * WC Breadcrumbs
	 */
	function csco_wc_breadcrumbs() {
		$display_options = get_option( 'wpseo_titles' );

		if ( ! isset( $display_options['breadcrumbs-enable'] ) ) {
			$display_options['breadcrumbs-enable'] = false;
		}

		if ( function_exists( 'yoast_breadcrumb' ) && $display_options['breadcrumbs-enable'] ) {
			yoast_breadcrumb( '<section class="cs-breadcrumbs" id="breadcrumbs">', '</section>' );
		} else {
			woocommerce_breadcrumb();
		}
	}

	/**
	 * WC Content SEO Breadcrumbs
	 */
	function csco_wc_content_breadcrumbs() {
		if ( is_product_taxonomy() || is_product() || is_cart() || is_checkout() || is_account_page() ) {
			csco_wc_breadcrumbs();
		}
	}
	add_action( 'csco_main_content_before', 'csco_wc_content_breadcrumbs', 15 );

	/**
	 * Remove default breadcrumbs
	 */
	function csco_wc_remove_breadcrumbs() {
		// Remove theme default breadcrumbs.
		if ( is_shop() || is_product_taxonomy() || is_product() || is_cart() || is_checkout() || is_account_page() ) {
			remove_action( 'csco_main_content_before', 'csco_breadcrumbs' );
		}
		// Remove woocommerce default breadcrumbs.
		remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0 );
	}
	add_action( 'template_redirect', 'csco_wc_remove_breadcrumbs' );

	/**
	 * WooCommerce page header.
	 */
	function csco_wc_page_header() {
		if ( is_shop() ) {
			$shop_id = wc_get_page_id( 'shop' );

			$allow = array( 'none', 'standard', 'small', 'overlay', 'title' );

			$page_header = get_post_meta( $shop_id, 'csco_page_header_type', true );

			if ( ! in_array( $page_header, $allow, true ) || 'default' === $page_header ) {
				$page_header = 'standard';
			}

			$page_header = apply_filters( 'csco_page_header_type', $page_header );

			if ( 'none' === $page_header ) {
				return;
			}

			$image_size = 'disabled' === csco_get_page_sidebar() ? 'full' : 'cs-large';

			$overlay = 'cs-overlay cs-overlay-no-hover cs-overlay-ratio cs-ratio-landscape cs-ratio-16by9 cs-bg-dark';

			$no_paged = in_array( absint( get_query_var( 'paged' ) ), array( 0, 1 ), true );

			if ( ! $no_paged ) {
				$page_header = 'standard';
			}
			?>
			<header class="entry-header <?php echo esc_attr( ( 'overlay' === $page_header ) ? $overlay : 'entry-header-' . $page_header ); ?>">
				<?php if ( ( has_post_thumbnail( $shop_id ) || 'overlay' === $page_header ) && 'title' !== $page_header && $no_paged ) { ?>
					<div class="<?php echo ( 'overlay' === $page_header ) ? 'cs-overlay-background' : 'entry-header-thumbnail'; ?>">
						<?php echo get_the_post_thumbnail( $shop_id, $image_size ); ?>
					</div>
				<?php } ?>

				<div class="<?php echo ( 'overlay' === $page_header ) ? 'cs-overlay-content' : 'entry-header-content'; ?>">
					<?php csco_wc_breadcrumbs(); ?>

					<h1 class="entry-title">
						<?php echo get_the_title( $shop_id ); ?>
					</h1>

					<?php
					if ( 'small' === $page_header ) {
						$post_shop = get_post( $shop_id );

						$the_content = apply_filters( 'the_content', $post_shop->post_content );

						if ( $the_content ) {
						?>
							<div class="woocommerce-products-header">
								<?php echo wp_kses_post( $the_content ); ?>
							</div>
						<?php
						}
					}
					?>
				</div>
			</header>
		<?php
		}
	}
	add_action( 'woocommerce_before_main_content', 'csco_wc_page_header' );

	/**
	 * Remove default archive description
	 */
	function csco_wc_header_small_archive_description() {
		if ( is_shop() ) {
			$shop_id = wc_get_page_id( 'shop' );

			$page_header = get_post_meta( $shop_id, 'csco_page_header_type', true );

			$page_header = apply_filters( 'csco_page_header_type', $page_header );

			if ( 'small' === $page_header ) {
				remove_action( 'woocommerce_archive_description', 'woocommerce_product_archive_description', 10, 0 );
			}
		}
	}
	add_action( 'template_redirect', 'csco_wc_header_small_archive_description' );

	// Remove default wrappers.
	remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10 );
	remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10 );

	/**
	 * Wrapper Start
	 */
	function csco_wc_wrapper_start() {
		?>
		<div id="primary" class="content-area">
			<div class="woocommerce-area">
		<?php
	}
	add_action( 'woocommerce_before_main_content', 'csco_wc_wrapper_start', 1 );

	/**
	 * Wrapper End
	 */
	function csco_wc_wrapper_end() {
		?>
			</div>
		</div>
		<?php
	}
	add_action( 'woocommerce_after_main_content', 'csco_wc_wrapper_end', 999 );
}