HEX
Server: Apache
System: Linux webd003.cluster128.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
User: slyfwmm (169339)
PHP: 8.1.34
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/slyfwmm/pianob/wp-content/themes/zk-monaco/woocommerce/wc-template-hooks.php
<?php
/**
 * WooCommerce Template Hooks
 *
 * Action/filter hooks used for WooCommerce functions/templates
 *
 * @author 		WooThemes
 * @category 	Core
 * @package 	WooCommerce/Templates
 * @version     3.x
 */

if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

/** 
 *Archive page 
 * @since 1.6.0
 * @author Chinh Duong Manh
*/

	/**
	 * Breadcrumb.
	 * this theme removed it from woocommerce_before_main_content
	 * @hooked woocommerce_breadcrumb - 20
	 */
	remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb' , 20 );
	/**
	 * Shop Title .
	 * this theme removed it from woocommerce_before_main_content
	 * and add Theme page title style
	 */
	add_filter( 'woocommerce_show_page_title', '__return_false' );
	add_action( 'woocommerce_before_main_content', 'cms_shop_page_title', 0 );
	/* Custom archive layout */
	if(!function_exists('zk_monaco_wc_content_open')){
		function zk_monaco_wc_content_open(){
			echo '<div class="container"><div class="row">';
		}
	}
	add_action( 'woocommerce_before_main_content', 'zk_monaco_wc_content_open', 1);
	if(!function_exists('zk_monaco_wc_content_close')){
		function zk_monaco_wc_content_close(){
			echo '</div></div>';
		}
	}
	add_action( 'woocommerce_sidebar', 'zk_monaco_wc_content_close', 99999);
	if(!function_exists('zk_monaco_wc_content_class')){
		function zk_monaco_wc_content_class($echo = false){
			global $smof_data;
			if(is_archive()){
				if(isset($smof_data['zk_monaco_wc_archive_sidebar']) && !empty($smof_data['zk_monaco_wc_archive_sidebar'])){
					if($echo){
						echo 'content-area wc-content col-md-9 pull-right';
					} else {
						return 'content-area wc-content col-md-9 pull-right';
					}
				} else {
					if($echo){
						echo 'content-area wc-content col-md-12';
					} else {
						return 'content-area wc-content col-md-12';
					}
				}
			} elseif (is_singular('product')) {
				if(isset($smof_data['zk_monaco_wc_single_sidebar']) && !empty($smof_data['zk_monaco_wc_single_sidebar'])){
					if($echo){
						echo 'content-area wc-content col-md-9 pull-right';
					} else {
						return 'content-area wc-content col-md-9 pull-right';
					}
				} else {
					if($echo){
						echo 'content-area wc-content col-md-12';
					} else {
						return 'content-area wc-content col-md-12';
					}
				}
			}
		}
	}
	if(!function_exists('zk_monaco_wc_sidebar')){
		function zk_monaco_wc_sidebar(){
			global $smof_data;
			if(is_active_sidebar( 'sidebar-9' )){
				if(is_archive() && isset($smof_data['zk_monaco_wc_archive_sidebar']) && !empty($smof_data['zk_monaco_wc_archive_sidebar']) ){
				 	return true;
				} elseif (is_singular('product') && isset($smof_data['zk_monaco_wc_single_sidebar']) && !empty($smof_data['zk_monaco_wc_single_sidebar'])) {
					return true;
				} else {
					return false;
				}
			} else {
				return false;
			}
		}
	}


/* Product price used in Zooka Element (Grid) */
add_action( 'zooka_element_price', 'woocommerce_template_loop_price', 5 );

/**
 * Change number of products per row 
 * @since 1.6.0
 * @author Chinh Duong Manh
*/
if (!function_exists('loop_columns')) {
	function loop_columns() {
		global $smof_data;
		if(!is_woocommerce()) return;
		if(isset($_REQUEST['column']) && !empty($_REQUEST['column'])){
			$cols = $_REQUEST['column'];

		} else {
			$cols = ( isset($smof_data['product_list_column']) && !empty($smof_data['product_list_column']) ) ? $smof_data['product_list_column'] : '3' ;
		}
		return $cols;
	}
}
add_filter('loop_shop_columns', 'loop_columns');
/* add shop columns to body */
if (!function_exists('zk_monaco_body_loop_columns')) {
	function zk_monaco_body_loop_columns($classes) {
		global $smof_data;
		if(isset($_REQUEST['column']) && !empty($_REQUEST['column'])){
			$classes[] = 'columns-'.$_REQUEST['column'];
		} else {
			$classes[] = ( isset($smof_data['product_list_column']) && !empty($smof_data['product_list_column']) ) ? 'columns-'.$smof_data['product_list_column'] : 'columns-3' ;
		}
		return $classes; 
	}
}
add_filter('body_class', 'zk_monaco_body_loop_columns');

/**
 * Change number of products per page to 12
 * @since 1.6.0
 * @author Chinh Duong Manh
**/
function cms_loop_shop_per_page(){
	global $smof_data;
	if(isset($_REQUEST['loop_shop_per_page']) && !empty($_REQUEST['loop_shop_per_page'])) {
		return $_REQUEST['loop_shop_per_page'];
	} else {
		return isset($smof_data['zk_monaco_wc_archive_per_page']) ? $smof_data['zk_monaco_wc_archive_per_page'] : '12' ;
	}
}
add_filter( 'loop_shop_per_page', 'cms_loop_shop_per_page' );


/** 
 * Custom product list layout
 * This actions applied for product archive page and VC shortcode
 * @since 1.3.0
 * @author Chinh Duong Manh 
*/
if (!function_exists('zk_monaco_wc_template_loop_product_open')) {
	function zk_monaco_wc_template_loop_product_open() {
	?>
		<div class="product-item-wrap overlay-wrap">
			<div class="product-item-media">
				<?php
					woocommerce_show_product_loop_sale_flash();
					woocommerce_template_loop_product_thumbnail();
				?>
				<div class="overlay">
				<div class="overlay-content">
					<div class="product-item-addtocart text-center">
					<?php woocommerce_template_loop_add_to_cart(); ?>
					</div>

				</div>
				</div>
			</div>
	<?php
	}
}
add_action('woocommerce_before_shop_loop_item', 'zk_monaco_wc_template_loop_product_open' , 10);
remove_action('woocommerce_before_shop_loop_item','woocommerce_template_loop_product_link_open', 10);
remove_action('woocommerce_before_shop_loop_item_title','woocommerce_show_product_loop_sale_flash', 10);
remove_action('woocommerce_before_shop_loop_item_title','woocommerce_template_loop_product_thumbnail', 10);

if (!function_exists('zk_monaco_wc_template_loop_product_title')) {
	function zk_monaco_wc_template_loop_product_title() {
	?>
		<div class="product-item-info text-center">
			<h5><a  href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h5>
			<?php
				woocommerce_template_loop_rating();
				woocommerce_template_loop_price();
			?>
		</div>
	</div> <!-- .product-item-wrap overlay-wrap -->
	<?php
	}
}
add_action('woocommerce_shop_loop_item_title', 'zk_monaco_wc_template_loop_product_title' , 10);
remove_action('woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title' , 10);
remove_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_rating' , 5);
remove_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price' , 10);


remove_action('woocommerce_after_shop_loop_item','woocommerce_template_loop_product_link_close', 5);
remove_action('woocommerce_after_shop_loop_item','woocommerce_template_loop_add_to_cart', 10);


/**
 * Custom Cart Page 
 * @since 1.3.0
 * @author Chinh Duong Manh 
*/
/* Change position of Process to checkout button */
add_action('woocommerce_cart_actions', 'woocommerce_button_proceed_to_checkout', 1);
remove_action( 'woocommerce_proceed_to_checkout', 'woocommerce_button_proceed_to_checkout', 20 );

/* Display Cross Sells on 2 columns instead of default 4 */
 
add_filter( 'woocommerce_cross_sells_columns', 'zk_monaco_change_cross_sells_columns' );
function zk_monaco_change_cross_sells_columns( $columns ) {
	return 2;
}
/* Display Only 2 Cross Sells instead of default 4 */
 
add_filter( 'woocommerce_cross_sells_total', 'zk_monaco_change_cross_sells_product_no' ); 
function zk_monaco_change_cross_sells_product_no( $columns ) {
	return 2;
}

/**
 * Custom Single product page
 * Hooked woocommerce_after_single_product_summary
 * @since 1.3.0
 * @author Chinh Duong Manh 
*/
	/* 
	 * Change upsell product column, number to show
	 * https://docs.woocommerce.com/document/change-number-of-upsells-output/
	*/
	remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15 );
	add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_upsells', 15 );

	if ( ! function_exists( 'woocommerce_output_upsells' ) ) {
		function woocommerce_output_upsells() {
		    woocommerce_upsell_display( 3,3 ); // Display 3 products in rows of 3
		}
	}
	/* Hooked woocommerce_output_related_products_args 
	 * Change related product column, number to show
	*/
	add_filter( 'woocommerce_output_related_products_args', 'zk_monaco_related_products_args' );
	function zk_monaco_related_products_args( $args ) {
		$args = array(
			'posts_per_page' => 3, /* 3 related products */
			'columns'		 => 3 /* 3 columns */
		);
		return $args;
	}