File: /var/www/agighana.org_backup/woocommerce-functions.php
<?php
/**
* Functions for Woocommerce features
*
* @package Bosa
*/
/**
* Add a wrapper div to product
* @since Bosa 1.0.0
*/
function bosa_before_shop_loop_item(){
echo '<div class="product-inner">';
}
add_action( 'woocommerce_before_shop_loop_item', 'bosa_before_shop_loop_item', 9 );
/**
* After shop loop item
* @since Bosa 1.0.0
*/
function bosa_after_shop_loop_item(){
echo '</div>';
}
add_action( 'woocommerce_after_shop_loop_item', 'bosa_after_shop_loop_item', 34 );
/**
* Hide default page title
* @since Bosa 1.0.0
*/
function bosa_woo_show_page_title(){
return false;
}
add_filter( 'woocommerce_show_page_title', 'bosa_woo_show_page_title' );
/**
* Change number or products per row.
* @since Bosa 1.0.0
*/
if ( !function_exists( 'bosa_loop_columns' ) ) {
function bosa_loop_columns() {
if( get_theme_mod( 'woocommerce_product_layout_type', 'product_layout_grid' ) == 'product_layout_grid' ){
return get_theme_mod( 'woocommerce_shop_product_column', 3 );
}elseif( get_theme_mod( 'woocommerce_product_layout_type', 'product_layout_grid' ) == 'product_layout_list' ){
return get_theme_mod( 'woocommerce_shop_list_column', 2 );
}
}
}
add_filter( 'loop_shop_columns', 'bosa_loop_columns' );
/**
* Add buttons in compare and wishlist
* @since Bosa 1.0.0
*/
if (!function_exists('bosa_compare_wishlist_buttons')) {
function bosa_compare_wishlist_buttons() {
$double = '';
$icon_layout = get_theme_mod( 'icon_group_layout', 'group_layout_one' );
if ( function_exists( 'yith_woocompare_constructor' ) && function_exists( 'YITH_WCWL' ) ) {
$double = ' d-compare-wishlist';
}
?>
<div class="product-compare-wishlist<?php echo esc_attr( $double ); ?> <?php echo esc_attr( $icon_layout ); ?>">
<?php
if( get_theme_mod( 'icon_group_layout', 'group_layout_one' ) == 'group_layout_four' ){
if ( function_exists( 'YITH_WCWL' ) ) {
?>
<div class="product-wishlist">
<?php echo do_shortcode( '[yith_wcwl_add_to_wishlist]' ) ?>
</div>
<?php }
}
if ( function_exists( 'yith_woocompare_constructor' ) ) {
global $product, $yith_woocompare;
$product_id = !is_null($product) ? yit_get_prop($product, 'id', true) : 0;
// return if product doesn't exist
if ( empty( $product_id ) || apply_filters( 'yith_woocompare_remove_compare_link_by_cat', false, $product_id ) )
return;
$url = is_admin() ? "#" : $yith_woocompare->obj->add_product_url( $product_id );
?>
<div class="product-compare">
<a class="compare" rel="nofollow" data-product_id="<?php echo absint( $product_id ); ?>" href="<?php echo esc_url($url); ?>">
<i class="fas fa-sync"></i>
<span class="info-tooltip">
<?php esc_html_e( 'Compare', 'bosa' ); ?>
</span>
</a>
</div>
<?php
}
if( get_theme_mod( 'icon_group_layout', 'group_layout_one' ) != 'group_layout_four' ){
if ( function_exists( 'YITH_WCWL' ) ) {
?>
<div class="product-wishlist">
<?php echo do_shortcode( '[yith_wcwl_add_to_wishlist]' ) ?>
</div>
<?php } ?>
<?php } ?>
<?php
}
add_action( 'woocommerce_after_shop_loop_item', 'bosa_compare_wishlist_buttons', 10 );
}
/**
* Add buttons in compare and wishlist
*/
if (!function_exists('bew_compare_wishlist_buttons')) {
function bew_compare_wishlist_buttons() {
$double = '';
if ( function_exists( 'yith_woocompare_constructor' ) && function_exists( 'YITH_WCWL' ) ) {
$double = ' d-compare-wishlist';
}
?>
<div class="product-compare-wishlist<?php echo esc_attr( $double ); ?>">
<?php
if ( function_exists( 'yith_woocompare_constructor' ) ) {
global $product, $yith_woocompare;
$product_id = !is_null($product) ? yit_get_prop($product, 'id', true) : 0;
// return if product doesn't exist
if ( empty( $product_id ) || apply_filters( 'yith_woocompare_remove_compare_link_by_cat', false, $product_id ) )
return;
$url = is_admin() ? "#" : $yith_woocompare->obj->add_product_url( $product_id );
?>
<div class="product-compare">
<a class="compare" rel="nofollow" data-product_id="<?php echo absint( $product_id ); ?>" href="<?php echo esc_url($url); ?>">
<i class="fas fa-sync"></i>
<span class="info-tooltip">
<?php esc_html_e( 'Compare', 'bosa' ); ?>
</span>
</a>
</div>
<?php
}
if ( function_exists( 'YITH_WCWL' ) ) {
?>
<div class="product-wishlist">
<?php echo do_shortcode( '[yith_wcwl_add_to_wishlist]' ) ?>
</div>
<?php } ?>
<?php
}
add_action( 'bew_yith_icon_group', 'bew_compare_wishlist_buttons', 10 );
}
/**
* Add yith quick view button
*/
if( function_exists( 'YITH_WCQV_Frontend' ) ){
function bew_yith_quick_view_buttons(){
$YITH = YITH_WCQV_Frontend();
add_action( 'bew_yith_icon_group', array( $YITH, 'yith_add_quick_view_button' ), 15 );
}
add_action( 'bew_yith_icon_group', 'bew_yith_quick_view_buttons' );
}
// BEW icon group closing div
add_action( 'bew_yith_icon_group', 'bosa_compare_wishlist_buttons_close', 16 );
/**
* Closing for quick view, compare and wishlist.
* @since Bosa 1.2.6
*/
if (!function_exists('bosa_compare_wishlist_buttons_close')) {
add_action( 'woocommerce_after_shop_loop_item', 'bosa_compare_wishlist_buttons_close', 16 );
function bosa_compare_wishlist_buttons_close() {
echo '</div>'; /* .product-compare-wishlist */
}
}
/**
* Change number of products that are displayed per page (shop page)
* @since Bosa 1.0.0
*/
function bosa_loop_shop_per_page( $cols ) {
// $cols contains the current number of products per page based on the value stored on Options –> Reading
// Return the number of products you wanna show per page.
$cols = get_theme_mod( 'woocommerce_product_per_page', 9 );
return $cols;
}
add_filter( 'loop_shop_per_page', 'bosa_loop_shop_per_page', 20 );
/**
* Check if WooCommerce is activated and is shop page.
*
* @return bool
* @since Bosa 1.0.0
*/
if( !function_exists( 'bosa_wooCom_is_shop' ) ){
function bosa_wooCom_is_shop() {
if ( class_exists( 'woocommerce' ) ) {
if ( is_shop() ) {
return true;
}
}else{
return false;
}
}
add_action( 'wp', 'bosa_wooCom_is_shop' );
}
/**
* Check if WooCommerce is activated and is cart page.
*
* @return bool
* @since Bosa 1.0.0
*/
if( !function_exists( 'bosa_wooCom_is_cart' ) ){
function bosa_wooCom_is_cart() {
if ( class_exists( 'woocommerce' ) ) {
if ( is_cart() ) {
return true;
}
}else{
return false;
}
}
add_action( 'wp', 'bosa_wooCom_is_cart' );
}
/**
* Check if WooCommerce is activated and is checkout page.
*
* @return bool
* @since Bosa 1.0.0
*/
if( !function_exists( 'bosa_wooCom_is_checkout' ) ){
function bosa_wooCom_is_checkout() {
if ( class_exists( 'woocommerce' ) ) {
if ( is_checkout() ) {
return true;
}
}else{
return false;
}
}
add_action( 'wp', 'bosa_wooCom_is_checkout' );
}
/**
* Check if WooCommerce is activated and is account page.
*
* @return bool
* @since Bosa 1.0.0
*/
if( !function_exists( 'bosa_wooCom_is_account_page' ) ){
function bosa_wooCom_is_account_page() {
if ( class_exists( 'woocommerce' ) ) {
if ( is_account_page() ) {
return true;
}
}else{
return false;
}
}
add_action( 'wp', 'bosa_wooCom_is_account_page' );
}
/**
* Modify excerpt item priority to last in product detail page.
* @since Bosa 1.2.6
*/
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 55 );
/**
* Change column number of related products in product detail page.
*
* @return array
* @since Bosa 1.2.6
*/
if( !function_exists( 'bosa_related_products_args' ) ){
add_filter( 'woocommerce_output_related_products_args', 'bosa_related_products_args', 20 );
function bosa_related_products_args( $args ) {
$args[ 'columns'] = 3;
if( get_theme_mod( 'woocommerce_product_layout_type', 'product_layout_grid' ) == 'product_layout_list' ){
$args[ 'columns'] = 2;
}
return $args;
}
}
/**
* Check if WooCommerce is activated and is product detail page.
*
* @return bool
* @since Bosa 1.2.6
*/
if( !function_exists( 'bosa_wooCom_is_product_page' ) ){
function bosa_wooCom_is_product_page() {
if ( class_exists( 'woocommerce' ) ) {
if ( is_product() ) {
return true;
}
}else{
return false;
}
}
add_action( 'wp', 'bosa_wooCom_is_product_page' );
}
/**
* Adds breadcrumb before product title in product detail page.
*
* @since Bosa 1.2.6
*/
if( !function_exists( 'bosa_product_detail_breadcrumb' ) ){
add_action( 'woocommerce_single_product_summary', 'bosa_product_detail_breadcrumb', 1 );
function bosa_product_detail_breadcrumb(){
if( bosa_wooCom_is_product_page() ){
if( ( get_theme_mod( 'breadcrumbs_controls', 'show_in_all_page_post' ) == 'disable_in_all_pages' || get_theme_mod( 'breadcrumbs_controls', 'show_in_all_page_post' ) == 'show_in_all_page_post' ) && !get_theme_mod( 'disable_single_product_breadcrumbs', false ) ){
bosa_breadcrumb_wrap();
}
}
}
}
/**
* Check if WooCommerce is activated and is product category page.
*
* @return bool
* @since Bosa 1.4.2
*/
if( !function_exists( 'bosa_wooCom_is_product_category' ) ){
function bosa_wooCom_is_product_category() {
if ( class_exists( 'woocommerce' ) ) {
if ( is_product_category() ) {
return true;
}
}else{
return false;
}
}
add_action( 'wp', 'bosa_wooCom_is_product_category' );
}
/**
* Add left sidebar to product detail page.
*
* @since Bosa 1.2.6
*/
if( !function_exists( 'bosa_woo_product_detail_left_sidebar' ) ){
function bosa_woo_product_detail_left_sidebar( $sidebarColumnClass ){
if( !get_theme_mod( 'disable_sidebar_woocommerce_page', false ) ){
if ( get_theme_mod( 'sidebar_settings', 'right' ) == 'left' ){
if( is_active_sidebar( 'woocommerce-left-sidebar') ){ ?>
<div id="secondary" class="sidebar left-sidebar <?php echo esc_attr( $sidebarColumnClass ); ?>">
<?php dynamic_sidebar( 'woocommerce-left-sidebar' ); ?>
</div>
<?php }
}elseif ( get_theme_mod( 'sidebar_settings', 'right' ) == 'right-left' ){
if( is_active_sidebar( 'woocommerce-left-sidebar') || is_active_sidebar( 'woocommerce-right-sidebar') ){ ?>
<div id="secondary" class="sidebar left-sidebar <?php echo esc_attr( $sidebarColumnClass ); ?>">
<?php dynamic_sidebar( 'woocommerce-left-sidebar' ); ?>
</div>
<?php
}
}
}
}
}
/**
* Add right sidebar to product detail page.
*
* @since Bosa 1.2.6
*/
if( !function_exists( 'bosa_woo_product_detail_right_sidebar' ) ){
function bosa_woo_product_detail_right_sidebar( $sidebarColumnClass ){
if( !get_theme_mod( 'disable_sidebar_woocommerce_page', false ) ){
if ( get_theme_mod( 'sidebar_settings', 'right' ) == 'right' ){
if( is_active_sidebar( 'woocommerce-right-sidebar') ){ ?>
<div id="secondary" class="sidebar right-sidebar <?php echo esc_attr( $sidebarColumnClass ); ?>">
<?php dynamic_sidebar( 'woocommerce-right-sidebar' ); ?>
</div>
<?php }
}elseif ( get_theme_mod( 'sidebar_settings', 'right' ) == 'right-left' ){
if( is_active_sidebar( 'woocommerce-left-sidebar') || is_active_sidebar( 'woocommerce-right-sidebar') ){ ?>
<div id="secondary-sidebar" class="sidebar right-sidebar <?php echo esc_attr( $sidebarColumnClass ); ?>">
<?php dynamic_sidebar( 'woocommerce-right-sidebar' ); ?>
</div>
<?php
}
}
}
}
}
/**
* Returns the sidebar column classes in product detail page.
*
* @return array
* @since Bosa 1.2.6
*/
if( !function_exists( 'bosa_get_sidebar_class' ) ){
function bosa_get_sidebar_class(){
$sidebarClass = 'col-lg-8';
$sidebarColumnClass = 'col-lg-4';
if ( get_theme_mod( 'sidebar_settings', 'right' ) == 'right' ){
if( !is_active_sidebar( 'woocommerce-right-sidebar') ){
$sidebarClass = "col-12";
}
}elseif ( get_theme_mod( 'sidebar_settings', 'right' ) == 'left' ){
if( !is_active_sidebar( 'woocommerce-left-sidebar') ){
$sidebarClass = "col-12";
}
}elseif ( get_theme_mod( 'sidebar_settings', 'right' ) == 'right-left' ){
$sidebarClass = 'col-lg-6';
$sidebarColumnClass = 'col-lg-3';
if( !is_active_sidebar( 'woocommerce-left-sidebar') && !is_active_sidebar( 'woocommerce-right-sidebar') ){
$sidebarClass = "col-12";
}
}
if ( get_theme_mod( 'sidebar_settings', 'right' ) == 'no-sidebar' || get_theme_mod( 'disable_sidebar_woocommerce_page', false ) || ( get_theme_mod( 'disable_sidebar_woocommerce_shop', false ) && ( bosa_wooCom_is_shop() || bosa_wooCom_is_product_category() ) ) || ( get_theme_mod( 'disable_sidebar_woocommerce_single', false ) && bosa_wooCom_is_product_page() ) ){
$sidebarClass = 'col-12';
}
$colClasses = array(
'sidebarClass' => $sidebarClass,
'sidebarColumnClass' => $sidebarColumnClass,
);
return $colClasses;
}
}
/**
* Add wrapper product gallery in product detail page.
*
* @since Bosa 1.2.6
*/
if( !function_exists( 'bosa_woocommerce_before_single_product_summary' ) ){
add_action( 'woocommerce_before_single_product_summary', 'bosa_woocommerce_before_single_product_summary', 5 );
function bosa_woocommerce_before_single_product_summary(){
echo '<div class="product-detail-wrapper">';
}
}
/**
* Add left sidebar before tabs in product detail page.
*
* @since Bosa 1.2.6
*/
if( !function_exists( 'bosa_woocommerce_after_single_product_summary' ) ){
add_action( 'woocommerce_after_single_product_summary', 'bosa_woocommerce_after_single_product_summary', 5 );
function bosa_woocommerce_after_single_product_summary(){
$getSidebarClass = bosa_get_sidebar_class();
echo '</div>';/* .product-detail-wrapper */
echo '<div class="row">';
if( !get_theme_mod( 'disable_sidebar_woocommerce_single', false ) ){
bosa_woo_product_detail_left_sidebar( $getSidebarClass[ 'sidebarColumnClass' ] );
}
echo '<div class="'. $getSidebarClass[ 'sidebarClass' ] .'">';
}
}
/**
* Add right sidebar before tabs in product detail page.
*
* @since Bosa 1.2.6
*/
if( !function_exists( 'bosa_woocommerce_after_single_product' ) ){
add_action( 'woocommerce_after_single_product', 'bosa_woocommerce_after_single_product' );
function bosa_woocommerce_after_single_product(){
$getSidebarClass = bosa_get_sidebar_class();
if( !get_theme_mod( 'disable_sidebar_woocommerce_single', false ) ){
bosa_woo_product_detail_right_sidebar( $getSidebarClass[ 'sidebarColumnClass' ] );
}
echo '</div>';/* col woocommerce tabs and related products */
echo '</div>';/* .row */
}
}
/**
* Add icon and tooltip text for Yith Woocommerce Quick View.
*
* @since Bosa 1.2.6
*/
if( !function_exists( 'bosa_yith_add_quick_view_button_html' ) ){
add_filter( 'yith_add_quick_view_button_html', 'bosa_yith_add_quick_view_button_html', 10, 3 );
function bosa_yith_add_quick_view_button_html( $button, $label, $product ){
$product_id = $product->get_id();
$button = '<div class="product-view"><a href="#" class="yith-wcqv-button" data-product_id="' . esc_attr( $product_id ) . '"><i class="fas fa-search"></i><span class="info-tooltip">' . $label . '</span></a></div>';
return $button;
}
}
/**
* Modify $label for Yith Woocommerce Wishlist.
*
* @since Bosa 1.2.6
*/
if( !function_exists( 'bosa_yith_wcwl_button_label' ) ){
add_filter( 'yith_wcwl_button_label', 'bosa_yith_wcwl_button_label' );
function bosa_yith_wcwl_button_label( $label_option ){
$label_option = '<span class="info-tooltip">'.$label_option.'</span>';
return $label_option;
}
}
/**
* Modify $browse_wishlist_text for Yith Woocommerce Wishlist.
*
* @since Bosa 1.2.6
*/
if( !function_exists( 'bosa_yith_wcwl_browse_wishlist_label' ) ){
add_filter( 'yith_wcwl_browse_wishlist_label', 'bosa_yith_wcwl_browse_wishlist_label' );
function bosa_yith_wcwl_browse_wishlist_label( $browse_wishlist_text ){
if( strpos( $browse_wishlist_text, 'info-tooltip' ) === false ){
$browse_wishlist_text = '<i class="fas fa-heart"></i><span class="info-tooltip">'.$browse_wishlist_text.'</span>';
}
return $browse_wishlist_text;
}
}
/**
* Loop product structure
*/
function bosa_loop_product_structure() {
$elements = array( 'woocommerce_template_loop_product_title', 'woocommerce_template_loop_price' );
$layout = get_theme_mod( 'woocommerce_product_card_layout', 'product_layout_one' );
if( 'product_layout_one' == $layout ) {
$loop_count = 0;
foreach ( $elements as $element ) {
call_user_func( $element );
if( $loop_count < 1 ){
if( !get_theme_mod( 'disable_shop_page_rating', false ) ){
bosa_zero_woocommerce_template_loop_rating();
woocommerce_template_loop_rating();
}
}
$loop_count++;
}
}
else {
$elements = array_diff( $elements, array( 'woocommerce_template_loop_price' ) );
echo '<div class="row align-items-center">';
echo '<div class="col-md-7 text-md-left">';
foreach ( $elements as $element ) {
call_user_func( $element );
}
if( !get_theme_mod( 'disable_shop_page_rating', false ) ){
bosa_zero_woocommerce_template_loop_rating();
woocommerce_template_loop_rating();
}
echo '</div>';
echo '<div class="col-md-5 text-md-right">';
woocommerce_template_loop_price();
echo '</div>';
echo '</div>';
}
}
/**
* Adds cart layout div to add-to-cart loop structure.
*/
function bosa_cart_button_loop_structure() {
$cart_button_layout = get_theme_mod( 'woocommerce_add_to_cart_button', 'cart_button_two' );
echo '<div class="button-' . esc_attr( $cart_button_layout ) . '">';
woocommerce_template_loop_add_to_cart();
echo '</div>';
}
/**
* Inserts the opening figure tag inside product-inner div.
*/
if( !function_exists( 'bosa_product_inner_figure_start' ) ){
function bosa_product_inner_figure_start(){
echo '<figure class="woo-product-image">';
}
}
/**
* Inserts the closing figure tag.
*/
if( !function_exists( 'bosa_product_inner_figure_close' ) ){
function bosa_product_inner_figure_close(){
echo '</figure>';
}
}
/**
* Inserts the opening div tag after product-inner div.
*/
if( !function_exists( 'bosa_product_inner_contents_start' ) ){
function bosa_product_inner_contents_start(){
echo '<div class="product-inner-contents">';
}
}
/**
* Inserts the closing div tag for product-inner-content div.
*/
if( !function_exists( 'bosa_product_inner_contents_close' ) ){
function bosa_product_inner_contents_close(){
echo '</div>';
}
}
/**
* Removes product's title from shop loop.
*/
add_action( 'woocommerce_shop_loop_item_title', 'bosa_woocommerce_shop_loop_item_title', 9 );
function bosa_woocommerce_shop_loop_item_title(){
remove_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title' );
}
/**
* Removes product's rating and price from shop loop.
*/
add_action( 'woocommerce_after_shop_loop_item_title', 'bosa_woocommerce_after_shop_loop_item_title', 4 );
function bosa_woocommerce_after_shop_loop_item_title(){
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' );
}
/**
* Adds rating stars even when no rating is given.
*/
function bosa_zero_woocommerce_template_loop_rating(){
global $product;
$count = 0;
$rating = $product->get_average_rating();
if ( 0 == $rating ) {
/* translators: %s: rating */
$label = sprintf( __( 'Rated %s out of 5', 'bosa' ), $rating );
echo '<div class="star-rating" role="img" aria-label="' . esc_attr( $label ) . '">' . wc_get_star_rating_html( $rating, $count ) . '</div>';
}
}
// adds bew widget zero rating
add_action( 'bew_woo_widget_zero_rating', 'bosa_zero_woocommerce_template_loop_rating' );
/**
* Removes product's add to cart button from shop loop.
*/
add_action( 'woocommerce_after_shop_loop_item', 'bosa_woocommerce_after_shop_loop_item', 9 );
function bosa_woocommerce_after_shop_loop_item(){
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
}
/**
* Hook into Woocommerce
*/
add_action( 'init', 'bosa_woocommerce_hooks' );
function bosa_woocommerce_hooks() {
add_action( 'woocommerce_before_shop_loop_item', 'bosa_product_inner_figure_start', 9 );
add_action( 'woocommerce_after_shop_loop_item', 'bosa_product_inner_figure_close', 20 );
add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_open', 29 );
//Add elements from sortable option
add_action( 'woocommerce_after_shop_loop_item', 'bosa_loop_product_structure', 30 );
add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 31 );
add_action( 'woocommerce_after_shop_loop_item', 'bosa_product_inner_contents_start', 25 );
add_action( 'woocommerce_after_shop_loop_item', 'bosa_product_inner_contents_close', 33 );
$cart_button_layout = get_theme_mod( 'woocommerce_add_to_cart_button', 'cart_button_two' );
if( $cart_button_layout == 'cart_button_two' ){
add_action( 'woocommerce_after_shop_loop_item', 'bosa_cart_button_loop_structure', 32 );
}elseif( $cart_button_layout == 'cart_button_three' ){
add_action( 'woocommerce_after_shop_loop_item', 'bosa_cart_button_loop_structure', 32 );
}elseif( $cart_button_layout == 'cart_button_four' ){
add_action( 'woocommerce_after_shop_loop_item', 'bosa_cart_button_loop_structure', 19 );
}
}
// Single Products
add_action( 'wp', 'bosa_single_product_hooks' );
function bosa_single_product_hooks(){
if( bosa_wooCom_is_product_page() ){
$disable_single_product_tabs = get_theme_mod( 'disable_single_product_tabs', false );
if( $disable_single_product_tabs ){
remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs' );
}
$disable_single_product_related_products = get_theme_mod( 'disable_single_product_related_products', false );
if( $disable_single_product_related_products ){
remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 );
}
}
}
/**
* Add to cart button html.
*/
function bosa_filter_loop_add_to_cart( $button, $product, $args ) {
global $product;
//Return if not button layout 4
$cart_button_layout = get_theme_mod( 'woocommerce_add_to_cart_button', 'cart_button_two' );
if ( $cart_button_layout != 'cart_button_four' ) {
return $button;
}
$text = '<i class="fas fa-shopping-cart"></i>';
$button = sprintf(
'<a href="%s" data-quantity="%s" class="%s" %s>%s</a>',
esc_url( $product->add_to_cart_url() ),
esc_attr( isset( $args['quantity'] ) ? $args['quantity'] : 1 ),
esc_attr( isset( $args['class'] ) ? $args['class'] : 'button' ),
isset( $args['attributes'] ) ? wc_implode_html_attributes( $args['attributes'] ) : '',
$text
);
return $button;
}
add_filter( 'woocommerce_loop_add_to_cart_link', 'bosa_filter_loop_add_to_cart', 10, 3 );
/**
* Sales badge text
*/
function bosa_sale_badge_tag( $html, $post, $product ) {
if ( !$product->is_on_sale() ) {
return;
}
$badge_text = get_theme_mod( 'woocommerce_sale_badge_text', 'Sale!' );
$enable_sale_percent = get_theme_mod( 'enable_sale_badge_percent', false );
$percent_text = get_theme_mod( 'woocommerce_sale_badge_percent', '-{value}%' );
if( !$enable_sale_percent ){
$badge = '<span class="onsale">' . esc_html( $badge_text ) . '</span>';
}
else{
if( $product->is_type( 'variable' ) ){
$percentages = array();
// Get all variation prices
$prices = $product->get_variation_prices();
// Loop through variation prices
foreach( $prices['price'] as $key => $price ){
// Only on sale variations
if( $prices['regular_price'][$key] !== $price ){
// Calculate and set in the array the percentage for each variation on sale
$percentages[] = round( 100 - ( floatval($prices['sale_price'][$key]) / floatval($prices['regular_price'][$key]) * 100 ) );
}
}
$percentage = max( $percentages );
}elseif( $product->is_type('grouped') ){
$percentages = array();
$children_ids = $product->get_children();
foreach( $children_ids as $child_id ){
$child_product = wc_get_product($child_id);
$regular_price = (float) $child_product->get_regular_price();
$sale_price = (float) $child_product->get_sale_price();
if ( $sale_price != 0 || ! empty($sale_price) ) {
$percentages[] = round(100 - ($sale_price / $regular_price * 100));
}
}
$percentage = max($percentages) ;
}else{
$regular_price = (float) $product->get_regular_price();
$sale_price = (float) $product->get_sale_price();
if( $sale_price != 0 || ! empty($sale_price) ){
$percentage = round(100 - ($sale_price / $regular_price * 100) );
}else{
return $html;
}
}
$percent_text = str_replace( '{value}', $percentage, $percent_text );
$badge = '<span class="onsale">' . esc_html( $percent_text ) . '</span>';
}
return $badge;
}
add_filter( 'woocommerce_sale_flash', 'bosa_sale_badge_tag', 10, 3 );
if( !function_exists('bosa_add_woocommerce_product_class') ){
/**
* WooCommerce Post Class filter.
*
*/
function bosa_add_woocommerce_product_class( $classes, $product ){
if( get_theme_mod( 'woocommerce_product_layout_type', 'product_layout_grid' ) == 'product_layout_grid' ){
$classes[] = 'product-grid';
}elseif( get_theme_mod( 'woocommerce_product_layout_type', 'product_layout_grid' ) == 'product_layout_list' ){
$classes[] = 'product-list';
}
return $classes;
}
}
add_filter( 'woocommerce_post_class', 'bosa_add_woocommerce_product_class', 10, 2 );
add_filter( 'woocommerce_single_product_zoom_options', 'bosa_single_product_zoom_options' );
if( !function_exists('bosa_single_product_zoom_options') ){
/**
* WooCommerce single product zoom magnification level.
*
*/
function bosa_single_product_zoom_options( $zoom_options ) {
// Changing the magnification level:
$magnification = get_theme_mod( 'single_product_iamge_magnify', 1 );
$zoom_options['magnify'] = $magnification;
return $zoom_options;
}
}
/**
* Add product wishlist
* @since Bosa 1.0.0
*/
if ( !function_exists('bosa_head_wishlist') ) {
function bosa_head_wishlist() {
if ( function_exists( 'YITH_WCWL' ) ) {
$wishlist_url = YITH_WCWL()->get_wishlist_url();
?>
<div class="header-wishlist">
<a href="<?php echo esc_url( $wishlist_url ); ?>">
<span class="header-svg-icon">
<svg width="20.6px" height="20.6px" viewBox="-28.967 472.28 20.6 20.6" xmlns="http://www.w3.org/2000/svg">
<g>
<path fill="#253D4E" d="M-14.085,472.58c-0.938,0.016-1.856,0.296-2.66,0.814c-0.804,0.518-1.467,1.254-1.922,2.134
c-0.454-0.88-1.117-1.616-1.921-2.134c-0.804-0.518-1.722-0.798-2.66-0.814c-1.495,0.07-2.904,0.771-3.919,1.951
c-1.015,1.18-1.552,2.742-1.496,4.346c0,6.052,9.126,13.041,9.514,13.337l0.481,0.365l0.481-0.365
c0.388-0.295,9.515-7.286,9.515-13.337c0.056-1.604-0.481-3.166-1.496-4.346C-11.181,473.351-12.59,472.65-14.085,472.58z
M-18.667,490.381c-2.71-2.171-8.33-7.503-8.33-11.504c-0.057-1.13,0.305-2.239,1.007-3.084c0.702-0.845,1.688-1.358,2.741-1.427
c1.054,0.069,2.039,0.582,2.741,1.427c0.702,0.845,1.064,1.953,1.007,3.084h1.666c-0.057-1.13,0.305-2.239,1.007-3.084
c0.702-0.845,1.688-1.358,2.741-1.427c1.054,0.069,2.039,0.582,2.741,1.427s1.064,1.953,1.007,3.084
C-10.337,482.88-15.957,488.211-18.667,490.381z"/>
</g>
</svg>
</span>
<span class="info-tooltip">
<?php esc_html_e( 'Wishlist', 'bosa' ); ?>
</span>
</a>
</div>
<?php
}
}
}
/**
* Add product compare icon in header
* @since Bosa 1.0.0
*/
if (!function_exists( 'bosa_head_compare' ) ) {
function bosa_head_compare() {
if ( function_exists( 'yith_woocompare_constructor' ) ) {
global $yith_woocompare;
?>
<div class="header-compare">
<a class="compare added" rel="nofollow" href="<?php echo esc_url( $yith_woocompare->obj->view_table_url() ); ?>">
<span class="header-svg-icon">
<svg width="20.6px" height="20.6px" viewBox="-62.923 456.029 20.6 20.6" xmlns="http://www.w3.org/2000/svg">
<g>
<path fill="#253D4E" d="M-43.735,469.155l-4.008,1.204l0.399,1.376l1.631-0.516c-1.718,2.52-4.629,3.925-7.643,3.689l0,0
c-0.256-0.018-0.511-0.049-0.764-0.095l0,0l-0.662-0.146l-0.272-0.052l-0.476-0.146l-0.323-0.155l-0.314-0.129l-0.501-0.249
c-2.59-1.344-4.313-3.944-4.561-6.88l-1.393,0.12c0.276,3.381,2.222,6.391,5.172,7.998l0,0c0.255,0.138,0.518,0.267,0.79,0.387
h0.093c0.238,0.103,0.484,0.189,0.73,0.275l0.17,0.06l0.637,0.163l0.272,0.069c0.161,0,0.331,0.052,0.501,0.077l0.416,0.069l0,0
c3.71,0.389,7.321-1.366,9.342-4.541l0.535,1.849l1.342-0.396L-43.735,469.155z"/>
<path fill="#253D4E" d="M-61.57,463.066l4.059-1.006l-0.331-1.367l-1.622,0.404c1.837-2.428,4.808-3.685,7.805-3.302l0,0
c0.254,0.033,0.506,0.079,0.756,0.138l0,0l0.654,0.172l0.178,0.06l0.476,0.172l0.34,0.146l0.306,0.146
c0.161,0.086,0.331,0.172,0.493,0.275c2.523,1.472,4.125,4.149,4.246,7.095l1.393-0.052c-0.122-3.369-1.913-6.448-4.764-8.187l0,0
l0,0c-0.247-0.154-0.502-0.295-0.764-0.421l-0.093-0.043c-0.232-0.109-0.47-0.212-0.713-0.31l-0.17-0.06
c-0.204-0.077-0.416-0.146-0.628-0.206l-0.263-0.077l-0.493-0.112c-0.144,0-0.28-0.06-0.425-0.077h-0.042
c-3.691-0.591-7.395,0.972-9.58,4.042l-0.45-1.875l-1.35,0.335L-61.57,463.066z"/>
</g>
</svg>
</span>
<span class="info-tooltip">
<?php esc_html_e( 'Compare', 'bosa' ); ?>
</span>
</a>
</div>
<?php
}
}
}
/**
* Add my account
* @since Bosa 1.0.0
*/
if ( !function_exists( 'bosa_my_account' ) ) {
function bosa_my_account() {
if ( get_theme_mod('woo_account', 1 ) == 1) {
?>
<div class="header-my-account">
<div class="header-login">
<a href="<?php echo esc_url( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) ); ?>">
<span class="header-svg-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="15px" height="20px" viewBox="-73.015 505.461 15 20">
<g>
<path fill="#253D4E" d="M-58.15,525.281h-1.637v-4.127c-0.001-0.642-0.256-1.257-0.709-1.71c-0.454-0.454-1.069-0.709-1.71-0.709
h-6.617c-0.642,0.001-1.257,0.256-1.71,0.709c-0.454,0.454-0.709,1.069-0.709,1.71v4.127h-1.637v-4.127
c0.001-1.076,0.429-2.107,1.19-2.867c0.76-0.76,1.792-1.188,2.867-1.19h6.617c1.076,0.001,2.107,0.429,2.867,1.19
c0.761,0.761,1.188,1.792,1.19,2.867V525.281z"/>
<path fill="#253D4E" d="M-65.515,515.461c-0.971,0-1.92-0.288-2.728-0.828c-0.807-0.54-1.437-1.306-1.808-2.204
c-0.372-0.897-0.469-1.885-0.279-2.837c0.189-0.953,0.657-1.827,1.344-2.514c0.687-0.687,1.562-1.154,2.514-1.344
c0.952-0.189,1.94-0.092,2.837,0.279c0.897,0.372,1.664,1.001,2.204,1.808c0.539,0.807,0.827,1.757,0.827,2.728
c-0.001,1.302-0.519,2.55-1.44,3.471C-62.965,514.942-64.213,515.459-65.515,515.461z M-65.515,507.277
c-0.647,0-1.28,0.192-1.819,0.552c-0.538,0.36-0.958,0.871-1.206,1.469c-0.248,0.598-0.313,1.256-0.186,1.891
c0.126,0.635,0.438,1.218,0.896,1.676c0.458,0.458,1.041,0.77,1.676,0.896c0.635,0.126,1.293,0.061,1.891-0.186
c0.598-0.248,1.109-0.667,1.469-1.206s0.552-1.171,0.552-1.819c0-0.868-0.345-1.701-0.959-2.315
C-63.814,507.622-64.647,507.277-65.515,507.277z"/>
</g>
</svg>
</span>
<span class="info-tooltip">
<?php esc_html_e( 'My Account', 'bosa' ); ?>
</span>
</a>
</div>
</div>
<?php
}
}
}
/**
* Add cart link
* @since Bosa 1.0.0
*/
if ( !function_exists('bosa_cart_link') ) {
function bosa_cart_link() {
?>
<a class="cart-contents" href="<?php echo esc_url( wc_get_cart_url() ); ?>">
<span class="header-svg-icon">
<svg width="20.6px" height="20.6px" viewBox="-60.369 566.879 20.6 20.6" xmlns="http://www.w3.org/2000/svg">
<g>
<path fill="#253D4E" d="M-40.069,569.679h-16.465l-0.035-0.292c-0.072-0.608-0.364-1.169-0.821-1.575
c-0.457-0.407-1.048-0.632-1.66-0.632h-1.018v1.667h1.018c0.204,0,0.401,0.075,0.554,0.211c0.153,0.136,0.25,0.323,0.274,0.525
l1.321,11.223c0.072,0.608,0.364,1.169,0.821,1.575c0.457,0.407,1.048,0.632,1.66,0.632h11.018v-1.667h-11.018
c-0.204,0-0.401-0.075-0.554-0.211c-0.153-0.136-0.25-0.323-0.274-0.526l-0.109-0.93h13.485L-40.069,569.679z M-43.266,578.012
h-12.287l-0.784-6.667h14.274L-43.266,578.012z"/>
<path fill="#253D4E" d="M-54.236,587.179c0.92,0,1.667-0.746,1.667-1.667c0-0.921-0.746-1.667-1.667-1.667
s-1.667,0.746-1.667,1.667C-55.902,586.432-55.156,587.179-54.236,587.179z"/>
<path fill="#253D4E" d="M-45.902,587.179c0.921,0,1.667-0.746,1.667-1.667c0-0.921-0.746-1.667-1.667-1.667
c-0.92,0-1.667,0.746-1.667,1.667C-47.569,586.432-46.823,587.179-45.902,587.179z"/>
</g>
</svg>
</span>
<span class="count"><?php echo wp_kses_data( WC()->cart->get_cart_contents_count() ); ?></span>
<div class="amount-cart hidden-xs"><?php echo wp_kses_data( WC()->cart->get_cart_subtotal() ); ?></div>
</a>
<?php
}
}
/**
* Add product cart box
* @since Bosa 1.0.0
*/
if ( !function_exists('bosa_header_cart') ) {
function bosa_header_cart() {
?>
<div class="header-cart">
<div class="header-cart-block">
<div class="header-cart-inner">
<?php bosa_cart_link(); ?>
<?php if( !bosa_wooCom_is_cart() && !bosa_wooCom_is_checkout() ){ ?>
<ul class="site-header-cart menu list-unstyled text-center">
<li>
<?php the_widget( 'WC_Widget_Cart', 'title=' ); ?>
</li>
</ul>
<?php } ?>
</div>
</div>
</div>
<?php
}
}
/**
* Add header add to cart fragment
* @since Bosa 1.0.0
*/
if ( !function_exists( 'bosa_header_add_to_cart_fragment' ) ) {
function bosa_header_add_to_cart_fragment( $fragments ) {
ob_start();
bosa_cart_link();
$fragments['a.cart-contents'] = ob_get_clean();
return $fragments;
}
add_filter( 'woocommerce_add_to_cart_fragments', 'bosa_header_add_to_cart_fragment' );
}