Viewing File: /home/maglabs/bambinos/wp-content/themes/juliette/functions/wc/actions.php
<?php
if ( NOVA_WOOCOMMERCE_IS_ACTIVE ) {
//==============================================================================
// Remove Woocommerce Styles
//==============================================================================
if ( ! function_exists('nova_remove_woocommerce_styles') ) :
function nova_remove_woocommerce_styles() {
add_filter( 'woocommerce_enqueue_styles', '__return_false' );
}
add_action( 'after_setup_theme', 'nova_remove_woocommerce_styles' );
endif;
//==============================================================================
// Breadcrumbs
//==============================================================================
remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0 );
//==============================================================================
// Result Count & Catalog Ordering
//==============================================================================
remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20, 0 );
remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30, 0 );
add_action( 'nova_woocommerce_result_count', 'woocommerce_result_count', 20 );
add_action( 'nova_woocommerce_catalog_ordering', 'woocommerce_catalog_ordering', 30, 0 );
//==============================================================================
// Gallery
//==============================================================================
add_action( 'after_setup_theme', 'nova_woocommerce_gallery' );
function nova_woocommerce_gallery() {
if ( Nova_OP::getOption( 'product_image_zoom' ) ) {
add_theme_support( 'wc-product-gallery-zoom' );
}
if ( Nova_OP::getOption( 'product_image_lightbox' ) ) {
add_theme_support( 'wc-product-gallery-lightbox' );
}
if ( nova_product_gallery_is_slider() ) {
add_theme_support( 'wc-product-gallery-slider' );
}
}
//==============================================================================
// Cart
//==============================================================================
remove_action( 'woocommerce_cart_collaterals', 'woocommerce_cross_sell_display' );
add_action( 'woocommerce_after_cart_table', 'woocommerce_cross_sell_display' );
//==============================================================================
// Woocommerce Product Out of Stock
//==============================================================================
add_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_stock', 10 );
function woocommerce_template_loop_stock() {
global $product;
if ( ! $product->is_in_stock() )
echo '<span class="stock out-of-stock">' . esc_html__( 'Out of stock', 'juliette' ) . '</span>';
}
//==============================================================================
// Add Wishlist Icon in Product Card
//==============================================================================
function add_wishlist_icon_in_product_card() {
if (class_exists('YITH_WCWL')) :
global $product;
?>
<a href="<?php echo YITH_WCWL()->is_product_in_wishlist($product->get_id())? esc_url(YITH_WCWL()->get_wishlist_url()) : esc_url(add_query_arg('add_to_wishlist', $product->get_id())); ?>"
data-product-id="<?php echo esc_attr($product->get_id()); ?>"
data-product-type="<?php echo esc_attr($product->get_type()); ?>"
data-wishlist-url="<?php echo esc_url(YITH_WCWL()->get_wishlist_url()); ?>"
data-browse-wishlist-text="<?php echo esc_attr(get_option('yith_wcwl_browse_wishlist_text')); ?>"
class="nova_product_wishlist_btn <?php echo YITH_WCWL()->is_product_in_wishlist($product->get_id())? 'clicked added' : 'add_to_wishlist'; ?>" rel="nofollow">
<i class="inova ic-favorite"></i>
</a>
<?php
endif;
}
//==============================================================================
// Product Quick View
//==============================================================================
if ( !function_exists('nova_product_quick_view_fn')):
add_action( 'wp_ajax_nova_product_quick_view', 'nova_product_quick_view_fn');
add_action( 'wp_ajax_nopriv_nova_product_quick_view', 'nova_product_quick_view_fn');
function nova_product_quick_view_fn() {
if (!isset( $_REQUEST['product_id'])) {
die();
}
$product_id = intval($_REQUEST['product_id']);
// wp_query for the product
wp('p='.$product_id.'&post_type=product');
ob_start();
get_template_part( 'woocommerce/quick-view' );
echo ob_get_clean();
die();
}
endif;
if ( !function_exists('nova_product_quick_view_button')):
function nova_product_quick_view_button() {
global $product, $custom_shop_quick_view;
echo '
<a href="#" class="nova_product_quick_view_btn" data-product-id="' . $product->get_id() . '" rel="nofollow"><i class="inova ic-zoom"></i></a>
';
}
endif;
//==============================================================================
// Active Filters Before Shop Loop
//==============================================================================
if ( ! function_exists('nova_show_active_filters')) {
add_action('woocommerce_before_shop_loop', 'nova_show_active_filters');
function nova_show_active_filters() {
the_widget('WC_Widget_Layered_Nav_Filters');
}
}
//==============================================================================
// Remove Single Product Sale from the original place
//==============================================================================
remove_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_sale_flash', 10 );
add_action( 'woocommerce_product_badges', 'woocommerce_show_product_sale_flash', 15 );
//==============================================================================
// woocommerce_before_add_to_cart_button Open Div
//==============================================================================
if( ! function_exists('woocommerce_before_add_to_cart_button_open_div') ) :
add_action( 'woocommerce_before_add_to_cart_button', 'woocommerce_before_add_to_cart_button_open_div', 100 );
function woocommerce_before_add_to_cart_button_open_div() {
echo '<div class="woocommerce-product-details__add-to-cart">';
}
endif;
//==============================================================================
// woocommerce_after_add_to_cart_button Closing Div
//==============================================================================
if( ! function_exists('woocommerce_after_add_to_cart_button_closing_div') ) :
add_action( 'woocommerce_after_add_to_cart_button', 'woocommerce_after_add_to_cart_button_closing_div', 0 );
function woocommerce_after_add_to_cart_button_closing_div() {
echo '</div>';
}
endif;
//==============================================================================
// Custom WooCommerce subcategory open box
//==============================================================================
if ( ! function_exists('nova_woocommerce_subcategory_box_open') ):
function nova_woocommerce_subcategory_box_open( ) {
echo '<div class="nova-banner-box">';
}
remove_action('woocommerce_before_subcategory', 'woocommerce_template_loop_category_link_open');
add_action('woocommerce_before_subcategory', 'nova_woocommerce_subcategory_box_open', 10);
endif;
//==============================================================================
// Custom WooCommerce subcategory images
//==============================================================================
if ( ! function_exists('nova_woocommerce_subcategory_thumbnail') ):
remove_action('woocommerce_before_subcategory_title', 'woocommerce_subcategory_thumbnail');
add_action('woocommerce_before_subcategory_title', 'nova_woocommerce_subcategory_thumbnail', 10, 1);
function nova_woocommerce_subcategory_thumbnail( $category ) {
$thumbnail_id = get_term_meta( $category->term_id, 'thumbnail_id', true );
if ( $thumbnail_id ) {
$image = wp_get_attachment_image_src( $thumbnail_id, 'woocommerce_single' );
$image = $image[0];
$image_srcset = function_exists( 'wp_get_attachment_image_srcset' ) ? wp_get_attachment_image_srcset( $thumbnail_id, 'shop_single_image_size' ) : false;
$image_sizes = function_exists( 'wp_get_attachment_image_sizes' ) ? wp_get_attachment_image_sizes( $thumbnail_id, 'shop_single_image_size' ) : false;
} else {
$image = wc_placeholder_img_src();
$image_srcset = $image_sizes = false;
}
if ( $image ) {
// Prevent esc_url from breaking spaces in urls for image embeds
// Ref: https://core.trac.wordpress.org/ticket/23605
$image = str_replace( ' ', '%20', $image );
echo '<div class="nova-banner-box__image">
<span class="woocommerce-loop-category__thumbnail" style="background-image :url(' . esc_url( $image ) . ');"></span>
</div>';
}
}
endif;
//==============================================================================
// Custom WooCommerce subcategory close box
//==============================================================================
if ( ! function_exists('nova_woocommerce_subcategory_box_close') ):
function nova_woocommerce_subcategory_box_close( $category ) {
echo '<a class="nova-banner-box__link-overlay woocommerce-loop-category__link" href="' . esc_url( get_term_link( $category, 'product_cat' ) ) . '"><span></span></a>';
echo '</div>';
}
remove_action('woocommerce_after_subcategory', 'woocommerce_template_loop_category_link_close');
add_action('woocommerce_after_subcategory', 'nova_woocommerce_subcategory_box_close', 10);
endif;
//==============================================================================
// Wishlist Button Shortcode For QuickView
//==============================================================================
function quickview_add_to_wishlist() {
if (class_exists('YITH_WCWL')):
echo do_shortcode('[yith_wcwl_add_to_wishlist]');
endif;
}
//==============================================================================
// Cart Page Add custom div anchor for sticky
//==============================================================================
add_action( 'woocommerce_after_cart','custom_cart_page_bottom_anchor', 10, 1);
function custom_cart_page_bottom_anchor($bottom_anchor) {
$cart_bottom_anchor = '<div id="cart_bottom_anchor"></div>';
print wp_kses($cart_bottom_anchor,'simple');
}
//==============================================================================
// Cart Page Add custom div anchor for sticky
//==============================================================================
add_action( 'woocommerce_after_checkout_form','custom_checkout_page_bottom_anchor', 10, 1);
function custom_checkout_page_bottom_anchor($bottom_anchor) {
$checkout_bottom_anchor = '<div id="checkout_bottom_anchor"></div>';
print wp_kses($checkout_bottom_anchor,'simple');
}
//==============================================================================
// Woocommerce change default placeholder
//==============================================================================
add_action( 'init', 'nova_change_default_woocommerce_placeholder' );
function nova_change_default_woocommerce_placeholder() {
add_filter('woocommerce_placeholder_img_src', 'custom_woocommerce_placeholder_img_src');
function custom_woocommerce_placeholder_img_src( $src ) {
$src = get_template_directory_uri().'/assets/images/placeholder.png';
return $src;
}
}
//==============================================================================
// Exclude products from default wordpress search
//==============================================================================
if ( !function_exists('nova_exclude_products')):
add_action( 'pre_get_posts', 'nova_exclude_products', 99 );
function nova_exclude_products() {
global $wp_post_types;
if ( post_type_exists( 'product' ) && is_search()) {
//die('test');
$wp_post_types['product']->exclude_from_search = true;
}
}
endif;
//==============================================================================
// Ajax search form
//==============================================================================
if ( !function_exists('nova_ajax_search_form')):
add_action( 'nova_ajax_search_form', 'nova_ajax_search_form');
function nova_ajax_search_form() {
$rand_id = rand(1, 999);
if( ( 1 == Nova_OP::getOption('header_search_toggle') ) ) :
ob_start();
$notsearch = false;
if (isset($_GET['s']) && isset($_GET['post_type']) && $_GET['post_type']== 'product') {
$args = array(
's' => sanitize_text_field($_GET['s']),
'posts_per_page' => 4,
'post_type' => 'product',
'post_status' => 'publish',
'suppress_filters' => false,
'tax_query' => array(
array(
'taxonomy' => 'product_visibility',
'field' => 'name',
'terms' => 'exclude-from-search',
'operator' => 'NOT IN',
)
)
);
if ( isset( $_GET['search_category'] ) && ($_GET['search_category']!= 'all') ) {
$args['tax_query'] = array(
'relation' => 'AND',
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => sanitize_text_field($_GET['search_category'])
)
);
}
} else {
$notsearch = true;
$meta_query = WC()->query->get_meta_query();
$tax_query = WC()->query->get_tax_query();
$tax_query[] = array(
'taxonomy' => 'product_visibility',
'field' => 'name',
'terms' => 'featured',
'operator' => 'IN',
);
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'ignore_sticky_posts' => 1,
'posts_per_page' => 4,
'meta_query' => $meta_query,
'tax_query' => $tax_query,
);
}
echo '
<form class="header_search_form" role="search" method="get" action="' . esc_url( home_url( '/' ) ) .'">
<div class="header_search_form_inner">
<div class="header_search_input_wrapper">
<input
name="s"
id="search_'.$rand_id.'"
class="header_search_input"
type="search"
autocomplete="off"
value="' . get_search_query() .'"
data-min-chars="3"
placeholder="' . esc_attr__( 'Product Search', 'juliette' ) . '"
/>
<input type="hidden" name="post_type" value="product" />
</div>';
if( ( '1' == Nova_OP::getOption('header_search_by_category') ) ) :
$categories= get_terms( array( 'taxonomy' => 'product_cat','hide_empty' => 0, 'parent' => 0) );
if( $categories ) {
echo '<div class="header_search_select_wrapper">
<select name="search_category" id="header_search_category_'.$rand_id.'" class="header_search_select">
<option value="all" selected>' . esc_html__( 'Select Category', 'juliette' ) . '</option>';
foreach ($categories as $cat) {
printf('<option %s value="%s">%s</option>', isset($_GET['search_category']) && $_GET['search_category']== $cat->slug? 'selected' : '', $cat->slug, $cat->name);
}
echo '</select>
</div>';
}
endif;
echo '<div class="header_search_button_wrapper">
<button class="header_search_button" type="submit">
<svg class="juliette-btn-search">
<use xlink:href="#juliette-btn-search"></use>
</svg>
</button>
</div>';
echo '
</div>
<div class="header_search_ajax_loading">
<span></span>
</div>
<div class="header_search_ajax_results_wrapper">
<div class="header_search_ajax_results">
<div class="header_search_icon">
<svg class="juliette-search-product-icon">
<use xlink:href="#juliette-search-product-icon"></use>
</svg>
</div>';
echo '</div>
</div>
</form>';
$output = ob_end_flush();
endif;
}
endif;
//==============================================================================
// External Product in new tab
//==============================================================================
remove_action( 'woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart', 30 );
add_action( 'woocommerce_external_add_to_cart', 'nova_external_add_to_cart', 30 );
function nova_external_add_to_cart(){
global $product;
if ( ! $product->add_to_cart_url() ) {
return;
}
$product_url = $product->add_to_cart_url();
$button_text = $product->single_add_to_cart_text();
do_action( 'woocommerce_before_add_to_cart_button' ); ?>
<p class="cart">
<a href="<?php echo esc_url( $product_url ); ?>" target="_blank" rel="nofollow" class="single_add_to_cart_button button alt"><?php echo esc_html( $button_text ); ?></a>
</p>
<?php do_action( 'woocommerce_after_add_to_cart_button' );
}
//==============================================================================
// 0 count for categories in shop archive
//==============================================================================\
if (!function_exists('nova_category_title')):
function nova_category_title( $category ) {
?>
<div class="nova-banner-box__info">
<a href="<?php echo esc_url( get_term_link( $category, 'product_cat' ) ) ?>">
<h2 class="woocommerce-loop-category__title">
<?php
echo esc_html( $category->name );
if ( $category->count >= 0 ) {
echo apply_filters( 'woocommerce_subcategory_count_html', ' <mark class="count">(' . esc_html( $category->count ) . ')</mark>', $category ); // WPCS: XSS ok.
}
?>
</h2>
</a>
</div>
<?php
}
remove_action( 'woocommerce_shop_loop_subcategory_title', 'woocommerce_template_loop_category_title', 10 );
add_action('woocommerce_shop_loop_subcategory_title', 'nova_category_title', 10, 1);
endif;
if ( !function_exists( 'nova_category_large_icons' )):
add_action( 'nova_category_large_icons', 'nova_category_large_icons');
/**
* Output category items as selected in mega dropdown
*
*
* @return html
*/
function nova_category_large_icons() {
if ( !NOVA_WOOCOMMERCE_IS_ACTIVE ) return;
$cat_list = Nova_OP::getOption('nav_button_categories', 0);
$args= array( 'taxonomy' => 'product_cat','hide_empty' => 0, 'orderby' => 'ASC', 'parent' =>0, 'include' => $cat_list );
$cats = get_terms( $args );
if ( is_array($cat_list)):
$unsorted = array();
$sorted = array();
foreach ($cats as $v) {
$unsorted[$v->term_id] = $v;
}
foreach ($cat_list as $v) {
if (isset($unsorted[$v]))
$sorted[] = $unsorted[$v];
}
else:
$sorted = $cats;
endif;
echo '<div class="megamenu_icon_list">';
if ( nova_new_products_page_url() !== false ):
echo '<a href="' . nova_new_products_page_url() . '"><i class="juliette-icons-ui_star"></i><span>'. nova_new_products_title('') .'</span></a>';
endif;
if ( nova_sale_page_url() !== false ):
echo '<a href="'.nova_sale_page_url().'"><i class="juliette-icons-ecommerce_discount-symbol"></i><span>'. nova_on_sale_products_title('') .'</span></a>';
endif;
foreach( $sorted as $cat ) {
$icon_type = get_term_meta( $cat->term_id, 'nova_icon_type', true );
if ( $icon_type == 'custom_icon' ) {
$thumbnail_id = get_term_meta( $cat->term_id, 'icon_img_id', true );
if ($thumbnail_id)
$icon = wp_get_attachment_thumb_url( $thumbnail_id );
else
$icon = wc_placeholder_img_src();
// Prevent esc_url from breaking spaces in urls for image embeds
// Ref: https://core.trac.wordpress.org/ticket/23605
$icon = str_replace( ' ', '%20', $icon );
echo '<a href="'.esc_url( get_term_link( $cat->term_id ) ).'"><img src="'. $icon .'" /><span>'. $cat->name .'</span></a>';
} else {
$icon = get_term_meta( $cat->term_id, 'icon_id', true );
echo '<a href="'.esc_url( get_term_link( $cat->term_id ) ).'"><i class="'. $icon .'"></i><span>'. $cat->name .'</span></a>';
}
}
echo '</div>';
}
endif;
}
//==============================================================================
// Product Image for Quickview
//==============================================================================
if ( ! function_exists( 'nova_show_qv_product_images' ) ) {
/**
* Output the product image before the single product summary.
*/
function nova_show_qv_product_images() {
wc_get_template( 'product-images/quick-view.php' );
}
}
//==============================================================================
// Add Wishlist button after add cart button
//==============================================================================
if( defined( 'YITH_WCWL' ) && ! function_exists( 'nova_wcwl_move_wishlist_button' ) ){
function nova_wcwl_move_wishlist_button( ){
echo do_shortcode( '[yith_wcwl_add_to_wishlist]' );
}
add_action( 'woocommerce_after_add_to_cart_button', 'nova_wcwl_move_wishlist_button' );
}
//==============================================================================
// Add size diverline
//==============================================================================
if( ! function_exists( 'nova_add_diver_line' ) ){
function nova_add_diver_line(){
echo '<div class="nova-divier-line"></div>';
}
add_action( 'woocommerce_single_product_summary', 'nova_add_diver_line',35);
}
//==============================================================================
// Add Cart Status Menu
//==============================================================================
if( ! function_exists( 'nova_add_checkout_status_menu' ) ){
function nova_add_checkout_status_menu() {
echo '<ul class="shopping_cart_status_menu">';
echo '<li>'.esc_html__( '01. Shopping Cart','juliette' ).'</li>';
echo '<li class="active">'.esc_html__( '02. Shipping & Checkout','juliette' ).'</li>';
echo '<li>'.esc_html__( '03. Done','juliette' ).'</li>';
echo '</ul>';
}
add_action( 'woocommerce_before_checkout_form', 'nova_add_checkout_status_menu',1);
}
if( ! function_exists( 'nova_add_thankyou_status_menu' ) ){
function nova_add_thankyou_status_menu() {
echo '<ul class="shopping_cart_status_menu">';
echo '<li>'.esc_html__( '01. Shopping Cart','juliette' ).'</li>';
echo '<li>'.esc_html__( '02. Shipping & Checkout','juliette' ).'</li>';
echo '<li class="active">'.esc_html__( '03. Done','juliette' ).'</li>';
echo '</ul>';
}
add_action( 'woocommerce_before_thankyou', 'nova_add_thankyou_status_menu',1);
}
Back to Directory
File Manager