Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * @package WordPress
- * @subpackage KLEO
- * @author SeventhQueen <themesupport@seventhqueen.com>
- * @since 1.4
- */
- // Load WooCommerce custom stylsheet
- if ( ! is_admin() ) {
- if ( version_compare( WOOCOMMERCE_VERSION, "2.1" ) < 0 ) {
- define( 'WOOCOMMERCE_USE_CSS', false );
- }
- add_action( 'wp_enqueue_scripts', 'kleo_load_woocommerce_css', 20 );
- }
- if ( ! function_exists( 'kleo_load_woocommerce_css' ) ) {
- function kleo_load_woocommerce_css() {
- $min = sq_option( 'dev_mode', 0 ) == 0 ? '.min' : '';
- /* If remove query option is ON */
- if ( sq_option( 'perf_remove_query', 0 ) == 1 ) {
- $version = null;
- } else {
- $version = KLEO_THEME_VERSION;
- }
- wp_deregister_style( 'woocommerce-layout' );
- wp_dequeue_style( 'woocommerce-layout' );
- wp_deregister_style( 'woocommerce-smallscreen' );
- wp_dequeue_style( 'woocommerce-smallscreen' );
- wp_deregister_style( 'woocommerce-general' );
- wp_dequeue_style( 'woocommerce-general' );
- wp_register_style( 'kleo-woocommerce', get_template_directory_uri() . '/woocommerce/assets/css/woocommerce' . $min . '.css', array(), $version );
- wp_enqueue_style( 'kleo-woocommerce' );
- }
- }
- //de-register PrettyPhoto - we will use our own
- add_action( 'wp_print_styles', 'my_deregister_styles', 100 );
- function my_deregister_styles() {
- wp_deregister_style( 'woocommerce_prettyPhoto_css' );
- wp_dequeue_style( 'woocommerce_prettyPhoto_css' );
- wp_dequeue_script( 'prettyPhoto' );
- wp_dequeue_script( 'prettyPhoto-init' );
- }
- if ( ! function_exists( 'checked_environment' ) ) {
- // Check WooCommerce is installed first
- add_action( 'plugins_loaded', 'checked_environment' );
- function checked_environment() {
- if ( ! class_exists( 'woocommerce' ) ) {
- wp_die( 'WooCommerce must be installed' );
- }
- }
- }
- /* Add theme support for single page images */
- if( sq_option( 'woo_prod_zoom', 0 ) == 1 ) {
- add_theme_support( 'wc-product-gallery-zoom' );
- }
- if( sq_option( 'woo_prod_lightbox', 0 ) == 1 ) {
- add_theme_support( 'wc-product-gallery-lightbox' );
- add_filter( 'woocommerce_single_product_image_gallery_classes', 'sq_woo_gallery_name_filter' );
- }
- function sq_woo_gallery_name_filter( $classes = array() ) {
- $classes[] = 'photoswipe-enabled';
- return $classes;
- }
- /* Admin scripts */
- if ( is_admin() ) {
- //remove backend options by removing them from the config array
- add_filter( 'woocommerce_general_settings', 'kleo_woocommerce_general_settings_filter' );
- add_filter( 'woocommerce_page_settings', 'kleo_woocommerce_general_settings_filter' );
- add_filter( 'woocommerce_catalog_settings', 'kleo_woocommerce_general_settings_filter' );
- add_filter( 'woocommerce_inventory_settings', 'kleo_woocommerce_general_settings_filter' );
- add_filter( 'woocommerce_shipping_settings', 'kleo_woocommerce_general_settings_filter' );
- add_filter( 'woocommerce_tax_settings', 'kleo_woocommerce_general_settings_filter' );
- function kleo_woocommerce_general_settings_filter( $options ) {
- $remove = array( 'woocommerce_enable_lightbox', 'woocommerce_frontend_css' );
- foreach ( $options as $key => $option ) {
- if ( isset( $option['id'] ) && in_array( $option['id'], $remove ) ) {
- unset( $options[ $key ] );
- }
- }
- return $options;
- }
- // add product meta boxes
- add_filter( 'kleo_meta_boxes', 'kleo_woo_product_meta' );
- function kleo_woo_product_meta( $meta_boxes ) {
- $prefix = '_kleo_';
- $meta_boxes[] = array(
- 'id' => 'theme_product',
- 'title' => 'Theme Product settings',
- 'pages' => array( 'product' ), // Post type
- 'context' => 'normal',
- 'priority' => 'default',
- 'show_names' => true, // Show field names on the left
- 'fields' => array(
- array(
- 'name' => 'Top bar status',
- 'desc' => 'Enable/disable site top bar',
- 'id' => $prefix . 'topbar_status',
- 'type' => 'select',
- 'options' => array(
- array( 'value' => '', 'name' => 'Default' ),
- array( 'value' => '1', 'name' => 'Visible' ),
- array( 'value' => '0', 'name' => 'Hidden' )
- ),
- 'value' => ''
- ),
- array(
- 'name' => 'Hide Header',
- 'desc' => 'Check to hide whole header area',
- 'id' => $prefix . 'hide_header',
- 'type' => 'checkbox',
- 'value' => '1'
- ),
- array(
- 'name' => 'Hide Footer',
- 'desc' => 'Check to hide whole footer area',
- 'id' => $prefix . 'hide_footer',
- 'type' => 'checkbox',
- 'value' => '1'
- ),
- array(
- 'name' => 'Hide Socket area',
- 'desc' => 'Check to hide the area after footer that contains copyright info.',
- 'id' => $prefix . 'hide_socket',
- 'type' => 'checkbox',
- 'value' => '1'
- ),
- array(
- 'name' => 'Custom Logo',
- 'desc' => 'Use a custom logo for this page only',
- 'id' => $prefix . 'logo',
- 'type' => 'file',
- ),
- array(
- 'name' => 'Custom Logo Retina',
- 'desc' => 'Use a custom retina logo for this page only',
- 'id' => $prefix . 'logo_retina',
- 'type' => 'file',
- ),
- array(
- 'name' => 'Transparent Main menu',
- 'desc' => 'Check to have Main menu background transparent.',
- 'id' => $prefix . 'transparent_menu',
- 'type' => 'checkbox',
- 'value' => '1'
- ),
- array(
- 'name' => 'Hide the title',
- 'desc' => 'Check to hide the title when displaying the post/page',
- 'id' => $prefix . 'title_checkbox',
- 'type' => 'checkbox',
- 'value' => '1'
- ),
- array(
- 'name' => 'Breadcrumb',
- 'desc' => '',
- 'id' => $prefix . 'hide_breadcrumb',
- 'type' => 'select',
- 'options' => array(
- array( 'value' => '', 'name' => 'Default' ),
- array( 'value' => '0', 'name' => 'Visible' ),
- array( 'value' => '1', 'name' => 'Hidden' )
- ),
- 'value' => ''
- ),
- array(
- 'name' => 'Hide information',
- 'desc' => 'Check to hide contact info in title section',
- 'id' => $prefix . 'hide_info',
- 'type' => 'checkbox',
- 'value' => '1'
- )
- ),
- );
- return $meta_boxes;
- }
- } //end is_admin()
- // Remove WC sidebar
- remove_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10 );
- //remove single product short description - excerpt
- if ( sq_option( 'woo_show_excerpt_single', 0 ) == 0 ) {
- remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20 );
- }
- //Single product data tabs
- remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10 );
- add_action( 'woocommerce_single_product_summary', 'woocommerce_output_product_data_tabs', 35 );
- //Single product sharing
- $enabled_posts = sq_option( 'blog_share_types', array( 'post', 'product' ) );
- if ( sq_option( 'blog_social_share', 1 ) == 1 && in_array( 'product', (array) $enabled_posts ) ) {
- add_action( 'woocommerce_share', 'kleo_social_share', 10 );
- }
- //sale badge
- remove_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_sale_flash', 10 );
- add_action( 'woocommerce_product_thumbnails', 'woocommerce_show_product_sale_flash' );
- //catalog mode
- if ( sq_option( 'woo_catalog', '0' ) == '1' ) {
- remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
- remove_action( 'woocommerce_simple_add_to_cart', 'woocommerce_simple_add_to_cart', 30 );
- remove_action( 'woocommerce_grouped_add_to_cart', 'woocommerce_grouped_add_to_cart', 30 );
- remove_action( 'woocommerce_variable_add_to_cart', 'woocommerce_variable_add_to_cart', 30 );
- remove_action( 'woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart', 30 );
- remove_action( 'woocommerce_single_product_modal_summary', 'woocommerce_template_single_add_to_cart', 30 );
- //disable prices
- if ( sq_option( 'woo_disable_prices', '0' ) == '1' ) {
- remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
- remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
- remove_action( 'woocommerce_single_product_modal_summary', 'woocommerce_template_single_price', 10 );
- }
- }
- //Category list change product count format
- add_filter( 'woocommerce_subcategory_count_html', 'kleo_woo_cat_count', 10, 2 );
- function kleo_woo_cat_count( $count, $category ) {
- return ' <mark class="count">' . $category->count . ' ' . __( 'Products', 'woocommerce' ) . '</mark>';
- }
- /**
- * Adds required Woocommerce classes to body element
- *
- * @param array $classes
- *
- * @return array
- * @since 1.0
- */
- function kleo_woo_body_classes( $classes = '' ) {
- if ( is_shop() || is_product_category() || is_product_tag() ) {
- $classes[] = 'kleo-shop-cols-' . sq_option( 'woo_shop_columns', '3' );
- }
- return $classes;
- }
- add_filter( 'body_class', 'kleo_woo_body_classes' );
- // WooCommerce layout overrides
- remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10 );
- remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10 );
- if ( ! function_exists( 'kleo_woocommerce_before_content' ) ) {
- // WooCommerce layout overrides
- add_action( 'woocommerce_before_main_content', 'kleo_woocommerce_before_content', 10 );
- function kleo_woocommerce_before_content() {
- //title section
- $title_arr = array();
- $shop_id = wc_get_page_id( 'shop' );
- $title_arr['show_title'] = true;
- //hide breadcrumb?
- $title_arr['show_breadcrumb'] = true;
- if ( sq_option( 'breadcrumb_status', 1 ) == 0 ) {
- $title_arr['show_breadcrumb'] = false;
- }
- if ( is_shop() ) {
- $title_arr = kleo_prepare_title( $shop_id );
- } elseif ( is_product() ) {
- $title_arr = kleo_prepare_title();
- }
- if ( sq_option( 'title_location', 'breadcrumb' ) == 'main' ) {
- $title_arr['show_title'] = false;
- } else {
- //title
- if ( is_shop() ) {
- $title = get_option( 'woocommerce_shop_page_title' );
- }
- if ( $shop_id && $shop_id != - 1 ) {
- if ( empty( $title ) ) {
- $title = get_the_title( $shop_id );
- }
- }
- if ( is_product_category() || is_product_tag() ) {
- global $wp_query;
- $tax = $wp_query->get_queried_object();
- $title = $tax->name;
- }
- }
- if ( ! isset( $title ) ) {
- $title = __( "Shop", 'kleo_framework' );
- }
- $title_arr['title'] = $title;
- $title_arr['link'] = '';
- if ( ( isset( $title_arr['show_breadcrumb'] ) && $title_arr['show_breadcrumb'] ) || isset( $title_arr['extra'] ) || $title_arr['show_title'] ) {
- echo kleo_title_section( $title_arr );
- }
- remove_action( 'kleo_before_main_content', 'kleo_title_main_content' );
- if ( sq_option( 'title_location', 'breadcrumb' ) == 'breadcrumb' || get_cfield( 'title_checkbox', $shop_id ) == 1 ) {
- add_filter( 'woocommerce_show_page_title', '__return_false' );
- }
- get_template_part( 'page-parts/general-before-wrap' );
- }
- }
- if ( ! function_exists( 'kleo_woocommerce_after_content' ) ) {
- // WooCommerce layout overrides
- add_action( 'woocommerce_after_main_content', 'kleo_woocommerce_after_content', 20 );
- function kleo_woocommerce_after_content() {
- get_template_part( 'page-parts/general-after-wrap' );
- }
- }
- //Remove breadcrumb
- remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0 );
- function kleo_woo_breadcrumb_data() {
- ob_start();
- woocommerce_breadcrumb( array(
- 'delimiter' => '<span class="sep"></span>',
- 'wrap_before' => '<div class="kleo_framework breadcrumb kleo-custom-breadcrumb" ' . ( is_single() ? 'itemprop="breadcrumb"' : '' ) . '>',
- 'wrap_after' => '</div>',
- ) );
- $breadcrumb = ob_get_clean();
- return $breadcrumb;
- }
- function kleo_woo_breadcrumb_replace() {
- if ( is_woocommerce() ) {
- add_filter( 'kleo_breadcrumb_data', 'kleo_woo_breadcrumb_data' );
- }
- }
- add_filter( 'wp', 'kleo_woo_breadcrumb_replace' );
- //Change page layout to match theme options settings
- add_filter( 'kleo_page_layout', 'kleo_woo_change_layout' );
- function kleo_woo_change_layout( $layout ) {
- global $kleo_config;
- if ( is_woocommerce() ) {
- $override_product = false;
- if ( is_product() ) {
- if ( get_cfield( 'post_layout' ) && get_cfield( 'post_layout' ) != 'default' ) {
- $override_product = get_cfield( 'post_layout' );
- } elseif ( sq_option( 'woo_single_sidebar', 'default' ) != 'default' ) {
- $override_product = sq_option( 'woo_single_sidebar', 'default' );
- }
- }
- $shop_id = wc_get_page_id( 'shop' );
- $shop_template = get_post_meta( $shop_id, '_wp_page_template', true );
- if ( is_shop() && $shop_id && $shop_template && $shop_template != 'default'
- && isset( $kleo_config['tpl_map'][ $shop_template ] )
- ) {
- $layout = $kleo_config['tpl_map'][ $shop_template ];
- } elseif ( $override_product !== false ) {
- $layout = $override_product;
- } elseif ( ( is_product_category() || is_product_tag() ) && sq_option( 'woo_cat_sidebar', 'default' ) != 'default' ) {
- $layout = sq_option( 'woo_cat_sidebar', 'default' );
- } else {
- //switch to the general set in Theme options
- $woo_template = sq_option( 'woo_sidebar', 'default' );
- if ( $woo_template != 'default' ) {
- $layout = $woo_template;
- }
- }
- //change default sidebar with Shop sidebar
- if ( is_active_sidebar( 'shop-1' ) ) {
- add_filter( 'kleo_sidebar_name', function() {
- return 'shop-1';
- } );
- }
- }
- return $layout;
- }
- /***************************************************
- * :: Add custom HTML to top header page set from Page edit
- ***************************************************/
- add_action( 'kleo_before_main', 'kleo_shop_header', 8 );
- function kleo_shop_header() {
- if ( ! is_shop() ) {
- return;
- }
- $shop_id = wc_get_page_id( 'shop' );
- if ( ! $shop_id ) {
- return;
- }
- $page_header = get_cfield( 'header_content', $shop_id );
- if ( $page_header != '' ) {
- echo '<section class="kleo-shop-header container-wrap main-color">';
- echo do_shortcode( html_entity_decode( $page_header ) );
- echo '</section>';
- }
- }
- /***************************************************
- * :: Add custom HTML to bottom page set from Page edit
- ***************************************************/
- add_action( 'kleo_after_main_content', 'kleo_woo_bottom_content', 12 );
- function kleo_woo_bottom_content() {
- if ( ! is_shop() ) {
- return;
- }
- $shop_id = wc_get_page_id( 'shop' );
- if ( ! $shop_id ) {
- return;
- }
- $page_bottom = get_cfield( 'bottom_content', $shop_id );
- if ( $page_bottom != '' ) {
- echo '<div class="kleo-page-bottom">';
- echo do_shortcode( html_entity_decode( $page_bottom ) );
- echo '</div>';
- }
- }
- // Change columns in product loop
- if ( ! function_exists( 'loop_columns' ) ) {
- function loop_columns() {
- return sq_option( 'woo_shop_columns', 3 );
- }
- add_filter( 'loop_shop_columns', 'loop_columns' );
- }
- // Number of products per page
- $woo_per_page = sq_option( 'woo_shop_products', 15 );
- add_filter( 'loop_shop_per_page', function( $cols ) use ( $woo_per_page ) {
- return $woo_per_page;
- });
- // Change columns in related products output
- remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 );
- add_action( 'woocommerce_after_single_product_summary', 'kleo_woocommerce_output_related_products', 20 );
- if ( ! function_exists( 'kleo_woocommerce_output_related_products' ) ) {
- function kleo_woocommerce_output_related_products() {
- $items = sq_option( 'woo_related_columns', 3 );
- woocommerce_related_products( array( 'posts_per_page' => $items, 'columns' => $items ) );
- }
- }
- // Change columns in upsell products output
- remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15 );
- add_action( 'woocommerce_after_single_product_summary', 'kleo_woocommerce_upsell_display', 20 );
- if ( ! function_exists( 'kleo_woocommerce_upsell_display' ) ) {
- function kleo_woocommerce_upsell_display() {
- $items = sq_option( 'woo_upsell_columns', 3 );
- woocommerce_upsell_display( $items, $items );
- }
- }
- // Change columns in upsell cross-sales output
- remove_action( 'woocommerce_cart_collaterals', 'woocommerce_cross_sell_display' );
- add_action( 'woocommerce_cart_collaterals', 'kleo_woocommerce_cross_sell_display' );
- if ( ! function_exists( 'kleo_woocommerce_cross_sell_display' ) ) {
- function kleo_woocommerce_cross_sell_display() {
- $items = sq_option( 'woo_cross_columns', 3 );
- woocommerce_cross_sell_display( $items, $items );
- }
- }
- //cart.php template
- if ( version_compare( WOOCOMMERCE_VERSION, '2.3.8', '>=' ) ) {
- remove_action( 'woocommerce_cart_collaterals', 'woocommerce_cart_totals', 10 );
- }
- /***************************************************
- * :: Product loop badges
- ***************************************************/
- // On sale wrapper
- remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 10 );
- add_action( 'woocommerce_before_shop_loop_item_title', 'kleo_woo_loop_badges', 10 );
- add_filter( 'woocommerce_sale_flash', 'kleo_woo_sale_flash', 10, 3 );
- function kleo_woo_sale_flash( $data, $post, $product ) {
- $output = '<span class="kleo-sale-flash">' . $data . '</span>';
- if ( sq_option( 'woo_percentage_badge', 0 ) == 1 ) {
- if ( $product->is_on_sale() && $product->product_type == 'variable' ) {
- $available_variations = $product->get_available_variations();
- $max_percentage = 0;
- for ( $i = 0; $i < count( $available_variations ); ++ $i ) {
- $variation_id = $available_variations[ $i ]['variation_id'];
- $variable_product1 = new WC_Product_Variation( $variation_id );
- $regular_price = $variable_product1->regular_price;
- $sales_price = $variable_product1->sale_price;
- if ( $sales_price && $sales_price != '' ) {
- $partial_percentage = ( ( $regular_price - $sales_price ) / $regular_price ) * 100;
- if ( $partial_percentage > $max_percentage ) {
- $max_percentage = $partial_percentage;
- }
- }
- }
- $percentage = round( $max_percentage );
- } elseif ( $product->is_on_sale() && $product->product_type == 'simple' ) {
- $percentage = round( ( ( $product->regular_price - $product->sale_price ) / $product->regular_price ) * 100 );
- } elseif ( $product->is_on_sale() && $product->product_type == 'external' ) {
- $percentage = round( ( ( $product->regular_price - $product->sale_price ) / $product->regular_price ) * 100 );
- }
- $output = '<span class="onsale percentage-badge">' . __( 'SAVE NOW', 'kleo_framework' ) . '<br>' .
- '<span class="big">' . $percentage . '%</span></span>';
- }
- return $output;
- }
- if ( ! function_exists( 'kleo_woo_loop_badges' ) ) {
- function kleo_woo_loop_badges() {
- global $product, $post;
- if ( kleo_woo_out_of_stock() ) {
- echo '<span class="out-of-stock-badge">' . __( 'Out of stock', 'woocommerce' ) . '</span>';
- } else if ( $product->is_on_sale() ) {
- wc_get_template( 'loop/sale-flash.php' );
- } else if ( ! $product->get_price() and sq_option( 'woo_free_badge', 1 ) == 1 ) {
- echo '<span class="free-badge">' . __( 'Free', 'woocommerce' ) . '</span>';
- } else if ( sq_option( 'woo_new_badge', 1 ) == 1 ) {
- $postdate = get_the_time( 'Y-m-d' ); // Post date
- $postdatestamp = strtotime( $postdate ); // Timestamped post date
- $newness = sq_option( 'woo_new_days', 7 ); // Number of days to treat a product as new
- if ( ( time() - ( 60 * 60 * 24 * $newness ) ) < $postdatestamp ) {
- echo '<span class="new-badge">' . __( 'New', 'kleo_framework' ) . '</span>';
- }
- }
- }
- }
- function kleo_woo_out_of_stock() {
- global $post;
- $post_id = $post->ID;
- $stock_status = get_post_meta( $post_id, '_stock_status', true );
- if ( $stock_status == 'outofstock' ) {
- return true;
- } else {
- return false;
- }
- }
- /***************************************************
- * :: Content-product hooks
- ***************************************************/
- remove_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title', 10 );
- add_action( 'woocommerce_shop_loop_item_title', 'kleo_woo_template_loop_product_cats', 9 );
- add_action( 'woocommerce_shop_loop_item_title', 'kleo_woo_template_loop_product_title', 10 );
- /**
- * Show the product categories in the product loop.
- */
- if ( version_compare( WOOCOMMERCE_VERSION, "3.0.0" ) >= 0 ) {
- function kleo_woo_template_loop_product_cats() {
- global $post;
- $size = sizeof( get_the_terms( $post->ID, 'product_cat' ) );
- echo wc_get_product_category_list( $post->ID, ', ', '<span class="posted_in">' . _n( '', '', $size, 'woocommerce' ) . ' ', '</span>' );
- }
- } else {
- function kleo_woo_template_loop_product_cats() {
- global $product, $post;
- $size = sizeof( get_the_terms( $post->ID, 'product_cat' ) );
- echo $product->get_categories( ', ', '<span class="posted_in">' . _n( '', '', $size, 'woocommerce' ) . ' ', '</span>' );
- }
- }
- /**
- * Show the product title in the product loop.
- */
- function kleo_woo_template_loop_product_title() {
- echo '<h3><a href="' . get_the_permalink() . '">' . get_the_title() . '</a></h3>';
- }
- /***************************************************
- * :: Product images
- ***************************************************/
- remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );
- add_action( 'woocommerce_before_shop_loop_item_title', 'kleo_woo_thumb_image', 10 );
- add_action( 'woocommerce_before_shop_loop_item_title', 'kleo_woo_first_image', 11 );
- function kleo_woo_thumb_image() {
- echo '<div class="kleo-woo-image kleo-woo-front-image">' . woocommerce_get_product_thumbnail() . '</div>';
- }
- function kleo_woo_first_image() {
- if ( kleo_woo_get_first_image() != '' ) {
- echo '<div class="kleo-woo-image kleo-woo-back-image">' . kleo_woo_get_first_image() . '</div>';
- }
- }
- function kleo_woo_get_first_image() {
- global $product, $post;
- if ( version_compare( WOOCOMMERCE_VERSION, "2.0.0" ) >= 0 ) {
- $image = '';
- if ( version_compare( WOOCOMMERCE_VERSION, "3.0.0" ) >= 0 ) {
- $attachment_ids = $product->get_gallery_image_ids();
- } else {
- $attachment_ids = $product->get_gallery_attachment_ids();
- }
- $img_count = 0;
- if ( $attachment_ids ) {
- foreach ( $attachment_ids as $attachment_id ) {
- if ( get_post_meta( $attachment_id, '_woocommerce_exclude_image', true ) ) {
- continue;
- }
- $image = wp_get_attachment_image( $attachment_id, 'shop_catalog' );
- $img_count ++;
- if ( $img_count == 1 ) {
- break;
- }
- }
- }
- } else {
- $attachments = get_posts( array(
- 'post_type' => 'attachment',
- 'numberposts' => - 1,
- 'post_status' => null,
- 'post_parent' => $post->ID,
- 'post__not_in' => array( get_post_thumbnail_id() ),
- 'post_mime_type' => 'image',
- 'orderby' => 'menu_order',
- 'order' => 'ASC'
- ) );
- $img_count = 0;
- if ( $attachments ) {
- foreach ( $attachments as $attachment ) {
- if ( get_post_meta( $attachment->ID, '_woocommerce_exclude_image', true ) == 1 ) {
- continue;
- }
- $image = wp_get_attachment_image( $attachment->ID, 'shop_catalog' );
- $img_count ++;
- if ( $img_count == 1 ) {
- break;
- }
- }
- }
- }
- return $image;
- }
- /***************************************************
- * :: Wishlist
- ***************************************************/
- add_action( 'woocommerce_before_shop_loop_item', 'kleo_woo_wishlist', 11 );
- function kleo_woo_wishlist() {
- if ( in_array( 'yith-woocommerce-wishlist/init.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
- echo do_shortcode( '[yith_wcwl_add_to_wishlist]' );
- }
- }
- add_action( 'yith_wcwl_after_wishlist_share', 'kleo_woo_wishlist_share' );
- function kleo_woo_wishlist_share() {
- global $yith_wcwl;
- if ( get_option( 'yith_wcwl_share_fb' ) == 'yes' || get_option( 'yith_wcwl_share_twitter' ) == 'yes' || get_option( 'yith_wcwl_share_pinterest' ) == 'yes' || get_option( 'yith_wcwl_share_googleplus' ) == 'yes' || get_option( 'yith_wcwl_share_email' ) == 'yes' ) {
- $url = $yith_wcwl->get_wishlist_url();
- $url .= get_option( 'permalink-structure' ) != '' ? '&user_id=' : '?user_id=';
- $url .= get_current_user_id();
- $normal_url = $url;
- $url = urlencode( $url );
- $title = urlencode( get_option( 'yith_wcwl_socials_title' ) );
- $twitter_summary = str_replace( '%wishlist_url%', '', get_option( 'yith_wcwl_socials_text' ) );
- $summary = urlencode( str_replace( '%wishlist_url%', $normal_url, get_option( 'yith_wcwl_socials_text' ) ) );
- $imageurl = urlencode( get_option( 'yith_wcwl_socials_image_url' ) );
- $html = '<div class="share-links kleo-wishlist-share">';
- $html .= apply_filters( 'yith_wcwl_socials_share_title', '<div class="hr-title hr-full"><abbr>' . __( "Social share", "kleo_framework" ) . '</abbr></div>' );
- if ( get_option( 'yith_wcwl_share_fb' ) == 'yes' ) {
- $html .= '<span class="kleo-facebook"><a target="_blank" class="facebook" href="https://www.facebook.com/sharer.php?s=100&p[title]=' . $title . '&p[url]=' . $url . '&p[summary]=' . $summary . '&p[images][0]=' . $imageurl . '" title="' . __( 'Facebook', 'yit' ) . '"><i class="icon-facebook"></i></a></span>';
- }
- if ( get_option( 'yith_wcwl_share_twitter' ) == 'yes' ) {
- $html .= '<span class="kleo-twitter"><a target="_blank" class="twitter" href="https://twitter.com/share?url=' . $url . '&text=' . $twitter_summary . '" title="' . __( 'Twitter', 'yit' ) . '"><i class="icon-twitter"></i></a></span>';
- }
- if ( get_option( 'yith_wcwl_share_pinterest' ) == 'yes' ) {
- $html .= '<span class="kleo-pinterest"><a target="_blank" class="pinterest" href="http://pinterest.com/pin/create/button/?url=' . $url . '&description=' . $summary . '&media=' . $imageurl . '" onclick="window.open(this.href); return false;"><i class="icon-pinterest-circled"></i></a></span>';
- }
- if ( get_option( 'yith_wcwl_share_googleplus' ) == 'yes' ) {
- $html .= '<span class="kleo-googleplus"><a target="_blank" class="googleplus" href="https://plus.google.com/share?url=' . $url . '&title="' . $title . '" onclick=\'javascript:window.open(this.href, "", "menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600");return false;\'><i class="icon-gplus"></i></a></span>';
- }
- if ( get_option( 'yith_wcwl_share_email' ) == 'yes' ) {
- $html .= '<span class="kleo-mail"><a target="_blank" class="post_share_email" href="mailto:?subject=' . $title . '&body=' . $url . '"><i class="icon-mail"></i></a></span>';
- }
- $html .= '</div>';
- echo $html;
- }
- }
- /***************************************************
- * :: Quick view
- ***************************************************/
- add_action( 'woocommerce_after_shop_loop_item', 'kleo_woo_quickview_button', 20 );
- function kleo_woo_quickview_button() {
- echo kleo_woo_get_quickview_button();
- //Enqueue variations script for quick view
- wp_enqueue_script( 'wc-add-to-cart-variation' );
- }
- function kleo_woo_get_quickview_button( $post_id = null, $tooltip = null ) {
- if ( ! $post_id ) {
- global $post;
- $post_id = $post->ID;
- }
- if ( $tooltip === true ) {
- $tooltip_data = ' data-toggle="tooltip" data-placement="top" data-title="' . __( "Quick View", "kleo_framework" ) . '" data-container="body"';
- } else {
- $tooltip_data = '';
- }
- return '<div class="quick-view hover-tip"' . $tooltip_data . ' data-prod="' . $post_id . '">' . __( 'Quick View', 'kleo_framework' ) . '</div>';
- }
- // Quickview Ajax
- add_action( 'wp_ajax_woo_quickview', 'kleo_woo_quickview' );
- add_action( 'wp_ajax_nopriv_woo_quickview', 'kleo_woo_quickview' );
- function kleo_woo_quickview() {
- global $post, $product;
- $prod_id = $_POST["product"];
- $post = get_post( $prod_id );
- $product = wc_get_product( $prod_id );
- ob_start();
- wc_get_template( 'content-single-product-modal.php' );
- $output = ob_get_contents();
- ob_end_clean();
- echo $output;
- die();
- }
- if ( ! function_exists( 'kleo_social_share' ) ) {
- function kleo_social_share() {
- ?>
- <div class="share-links">
- <div class="hr-title hr-full"><abbr><?php _e( "Social share", "kleo_framework" ); ?></abbr></div>
- <?php if ( sq_option( 'blog_social_share_facebook', 1 ) ) : ?>
- <span class="kleo-facebook">
- <a href="http://www.facebook.com/sharer.php?u=<?php the_permalink(); ?>" class="post_share_facebook"
- onclick="javascript:window.open(this.href,'', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=220,width=600');return false;">
- <i class="icon-facebook"></i>
- </a>
- </span>
- <?php endif; ?>
- <?php if ( sq_option( 'blog_social_share_twitter', 1 ) ) : ?>
- <span class="kleo-twitter">
- <a href="https://twitter.com/share?url=<?php the_permalink(); ?>" class="post_share_twitter"
- onclick="javascript:window.open(this.href,'', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=260,width=600');return false;">
- <i class="icon-twitter"></i>
- </a>
- </span>
- <?php endif; ?>
- <?php if ( sq_option( 'blog_social_share_googleplus', 1 ) ) : ?>
- <span class="kleo-googleplus">
- <a href="https://plus.google.com/share?url=<?php the_permalink(); ?>"
- onclick="javascript:window.open(this.href,'', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');return false;">
- <i class="icon-gplus"></i>
- </a>
- </span>
- <?php endif; ?>
- <?php if ( sq_option( 'blog_social_share_pinterest', 1 ) ) : ?>
- <span class="kleo-pinterest">
- <a href="http://pinterest.com/pin/create/button/?url=<?php the_permalink(); ?>&media=<?php if ( function_exists( 'the_post_thumbnail' ) ) {
- echo wp_get_attachment_url( get_post_thumbnail_id() );
- } ?>&description=<?php echo strip_tags( get_the_title() ); ?>"
- onclick="javascript:window.open(this.href,'', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');return false;">
- <i class="icon-pinterest-circled"></i>
- </a>
- </span>
- <?php endif; ?>
- <?php if ( sq_option( 'blog_social_share_linkedin', 0 ) ) : ?>
- <span class="kleo-linkedin">
- <a href="https://www.linkedin.com/shareArticle?url=<?php the_permalink(); ?>"
- class="post_share_linkedin"
- onclick="javascript:window.open(this.href,'', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');return false;">
- <i class="icon-linkedin"></i>
- </a>
- </span>
- <?php endif; ?>
- <?php if ( sq_option( 'blog_social_share_whatsapp', 0 ) ) : ?>
- <span class="kleo-whatsapp visible-xs-inline visible-sm-inline">
- <a href="whatsapp://send?text=<?php the_permalink(); ?>" data-action="share/whatsapp/share">
- <i class="icon-whatsapp"></i>
- </a>
- </span>
- <?php endif; ?>
- <?php if ( sq_option( 'blog_social_share_mail', 1 ) ) : ?>
- <span class="kleo-mail">
- <a href="mailto:?subject=<?php echo strip_tags( get_the_title() ); ?>&body=<?php the_permalink(); ?>"
- class="post_share_email">
- <i class="icon-mail"></i>
- </a>
- </span>
- <?php endif; ?>
- </div>
- <?php
- }
- }
- add_action( 'woocommerce_single_product_modal_summary', 'woocommerce_template_single_price', 10 );
- add_action( 'woocommerce_single_product_modal_summary', 'woocommerce_template_single_excerpt', 20 );
- add_action( 'woocommerce_single_product_modal_summary', 'woocommerce_template_single_add_to_cart', 30 );
- add_action( 'woocommerce_single_product_modal_summary', 'woocommerce_template_single_meta', 40 );
- $enabled_posts = sq_option( 'blog_share_types', array( 'post', 'product' ) );
- if ( sq_option( 'blog_social_share', 1 ) == 1 && in_array( 'product', (array) $enabled_posts ) ) {
- add_action( 'woocommerce_single_product_modal_summary', 'kleo_social_share', 50 );
- }
- /***************************************************
- * :: Prev/Next products
- ***************************************************/
- if ( ! function_exists( 'kleo_product_nav' ) ) :
- /**
- * Display navigation to next/previous post when applicable.
- *
- * @since Kleo 1.0
- *
- * @return void
- */
- function kleo_product_nav( $same_cat = false ) {
- if ( ! is_product() ) {
- return;
- }
- // Don't print empty markup if there's nowhere to navigate.
- $previous = ( is_attachment() ) ? get_post( get_post()->post_parent ) : get_adjacent_post( $same_cat, '', true );
- $next = get_adjacent_post( $same_cat, '', false );
- if ( ! $next && ! $previous ) {
- return;
- }
- ?>
- <nav class="pagination-sticky product-navigation" role="navigation">
- <?php
- if ( is_attachment() ) :
- previous_post_link( '%link', __( '<span id="older-nav">Go back</span>', 'kleo_framework' ) );
- else :
- if ( $previous ) {
- $prev_img = get_the_post_thumbnail( $previous->ID, 'thumbnail' );
- $prev_img = $prev_img ? '<span class="nav-image">' . $prev_img . '</span>' : '';
- previous_post_link( '%link', '<span id="older-nav">' . $prev_img . '<span class="outter-title"><span class="entry-title">' . get_the_title( $previous->ID ) . '</span></span></span>', $same_cat );
- }
- if ( $next ) {
- $next_img = get_the_post_thumbnail( $next->ID, 'thumbnail' );
- $next_img = $next_img ? '<span class="nav-image">' . $next_img . '</span>' : '';
- next_post_link( '%link', '<span id="newer-nav">' . $next_img . '<span class="outter-title"><span class="entry-title">' . get_the_title( $next->ID ) . '</span></span></span>', $same_cat );
- }
- endif;
- ?>
- </nav><!-- .navigation -->
- <?php
- }
- endif;
- if ( sq_option( 'woo_product_navigation', 1 ) == 1 ) :
- add_action( 'kleo_after_main', 'kleo_product_nav', 11 );
- endif;
- /***************************************************
- * :: Header menu cart
- ***************************************************/
- if ( sq_option( 'woo_cart_location', 'primary' ) != 'off' ) {
- if(!is_admin()) {
- add_filter('wp_nav_menu_items', 'kleo_woo_header_cart', 9, 2);
- }
- }
- if ( ! function_exists( 'kleo_woo_header_cart' ) ) {
- /**
- * Add search to menu
- *
- * @param string $items
- * @param object $args
- *
- * @return string
- */
- function kleo_woo_header_cart( $items, $args ) {
- $cart_location = sq_option( 'woo_cart_location', 'primary' );
- if ( $args->theme_location == $cart_location ) {
- $items .= kleo_woo_get_mini_cart();
- }
- return $items;
- }
- }
- /* ADD TO CART HEADER RELOAD */
- if ( ! function_exists( 'kleo_woo_header_cart_fragment' ) ) {
- function kleo_woo_header_cart_fragment( $fragments ) {
- $output = kleo_woo_get_mini_cart();
- $fragments['.kleo-toggle-menu.shop-drop'] = $output;
- $fragments['.cart-contents.mheader'] = kleo_woo_get_mobile_icon();
- return $fragments;
- }
- add_filter( 'woocommerce_add_to_cart_fragments', 'kleo_woo_header_cart_fragment' );
- }
- if ( ! function_exists( 'kleo_woo_get_mini_cart' ) ) {
- function kleo_woo_get_mini_cart( $just_inner = false ) {
- global $woocommerce;
- //Enqueue variations script for quick view
- wp_enqueue_script( 'wc-add-to-cart-variation' );
- $cart_output = "";
- $cart_total = $woocommerce->cart->get_cart_total();
- $cart_count = $woocommerce->cart->cart_contents_count;
- $cart_count_text = kleo_product_items_text( $cart_count );
- $cart_has_items = '';
- if ( $cart_count != "0" ) {
- $cart_has_items = ' has-products';
- }
- if ( ! $just_inner ) {
- $cart_output .= '<li class="menu-item kleo-toggle-menu shop-drop">'
- . '<a class="cart-contents js-activated" href="' . wc_get_cart_url() . '" title="' . __( "View Cart", "woocommerce" ) . '">'
- . '<span class="cart-items' . $cart_has_items . '"><i class="icon icon-basket-full-alt"></i> ';
- if ( $cart_count != "0" ) {
- $cart_output .= "<span class='kleo-notifications new-alert'>" . $cart_count . "</span>";
- }
- $cart_output .= '</span> <span class="caret"></span>'
- . '</a>'
- . '<ul class="kleo-toggle-submenu">';
- }
- $cart_output .= '<li>'
- . '<div class="kleo-minicart">';
- if ( $cart_count != "0" ) {
- $cart_output .= '<div class="minicart-header">' . $cart_count_text . ' ' . __( 'in the shopping cart', 'kleo_framework' ) . '</div>';
- $cart_output .= '<div class="minicart-contents">';
- foreach ( $woocommerce->cart->cart_contents as $cart_item_key => $cart_item ) {
- $_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
- $product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );
- if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_cart_item_visible', true, $cart_item, $cart_item_key ) ) {
- $cart_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
- $product_title = $cart_product->get_title();
- $product_short_title = ( strlen( $product_title ) > 25 ) ? substr( $product_title, 0, 22 ) . '...' : $product_title;
- $product_short_title = apply_filters( 'woocommerce_cart_item_name', $product_short_title, $cart_item, $cart_item_key );
- $thumbnail = apply_filters( 'woocommerce_cart_item_thumbnail', $cart_product->get_image(), $cart_item, $cart_item_key );
- $product_price = apply_filters( 'woocommerce_cart_item_price', wc_price( $cart_product->get_price() ), $cart_item, $cart_item_key );
- $product_quantity = apply_filters( 'woocommerce_cart_item_quantity', $cart_item['quantity'], $cart_item_key, $cart_item );
- if ( $cart_product->exists() && $cart_item['quantity'] > 0 ) {
- $cart_output .= '<div class="cart-product clearfix">';
- $cart_output .= '<figure><a class="cart-product-img" href="' . get_permalink( $cart_item['product_id'] ) . '">' . $thumbnail . '</a></figure>';
- $cart_output .= '<div class="cart-product-details">';
- $cart_output .= '<div class="cart-product-title"><a href="' . get_permalink( $cart_item['product_id'] ) . '">' . $product_short_title . '</a></div>';
- $cart_output .= '<div class="cart-product-price">' . __( "Price", "woocommerce" ) . ' ' . $product_price . '</div>';
- $cart_output .= '<div class="cart-product-quantity">' . __( 'Quantity', 'woocommerce' ) . ' ' . $product_quantity . '</div>';
- $cart_output .= '</div>';
- $cart_output .= kleo_woo_get_quickview_button( $cart_item['product_id'], false );
- $cart_output .= apply_filters( 'woocommerce_cart_item_remove_link', sprintf(
- '<a href="%s" class="remove" title="%s" data-product_id="%s" data-product_sku="%s">×</a>',
- esc_url( wc_get_cart_remove_url( $cart_item_key ) ),
- __( 'Remove this item', 'woocommerce' ),
- esc_attr( $product_id ),
- esc_attr( $_product->get_sku() )
- ), $cart_item_key );
- //$cart_output .= apply_filters( 'woocommerce_cart_item_remove_link', sprintf( '<a href="%s" class="remove" title="%s">×</a>', esc_url( $woocommerce->cart->get_remove_url( $cart_item_key ) ), __( 'Remove this item', 'woocommerce' ) ), $cart_item_key );
- $cart_output .= '</div>';
- }
- }
- }
- $cart_output .= '</div>';
- $cart_output .= '<div class="minicart-total-checkout">' . __( 'Cart Subtotal', 'kleo_framework' ) . ' ' . $cart_total . '</div>';
- $cart_output .= '<div class="minicart-buttons">';
- if ( version_compare( WOOCOMMERCE_VERSION, '2.1.0' ) >= 0 ) {
- $cart_output .= '<a class="btn btn-default" href="' . esc_url( wc_get_cart_url() ) . '"><span class="text">' . __( 'View Cart', 'woocommerce' ) . '</span></a>';
- $cart_output .= '<a class="btn btn-highlight checkout-button" href="' . esc_url( wc_get_checkout_url() ) . '"><span class="text">' . __( 'Proceed to checkout', 'woocommerce' ) . '</span></a>';
- } else {
- $cart_output .= '<a class="btn btn-default" href="' . esc_url( $woocommerce->cart->get_cart_url() ) . '"><span class="text">' . __( 'View Cart', 'woocommerce' ) . '</span></a>';
- $cart_output .= '<a class="btn btn-highlight" href="' . esc_url( $woocommerce->cart->get_checkout_url() ) . '"><span class="text">' . __( 'Proceed to checkout', 'woocommerce' ) . '</span></a>';
- }
- $cart_output .= '</div>';
- } else {
- $cart_output .= '<div class="minicart-header">' . __( 'Your shopping bag is empty.', 'kleo_framework' ) . '</div>';
- $shop_page_url = "";
- if ( version_compare( WOOCOMMERCE_VERSION, '2.1.0' ) >= 0 ) {
- $shop_page_url = get_permalink( wc_get_page_id( 'shop' ) );
- } else {
- $shop_page_url = get_permalink( wc_get_page_id( 'shop' ) );
- }
- $cart_output .= '<div class="minicart-buttons">';
- $cart_output .= '<a class="btn btn-default kleo-go-shop" href="' . esc_url( $shop_page_url ) . '"><span class="text">' . __( 'Go to the shop', 'kleo_framework' ) . '</span></a>';
- $cart_output .= '</div>';
- }
- $cart_output .= '</div>'
- . '</li>';
- if ( ! $just_inner ) {
- $cart_output .= '</ul>'
- . '</li>';
- }
- return $cart_output;
- }
- }
- function kleo_product_items_text( $count ) {
- $product_item_text = "";
- if ( $count > 1 ) {
- $product_item_text = str_replace( '%', number_format_i18n( $count ), __( '% items', 'kleo_framework' ) );
- } elseif ( $count == 0 ) {
- $product_item_text = __( '0 items', 'kleo_framework' );
- } else {
- $product_item_text = __( '1 item', 'kleo_framework' );
- }
- return $product_item_text;
- }
- /* Mobile cart icons */
- function kleo_woo_get_mobile_icon() {
- global $woocommerce;
- $cart_count = $woocommerce->cart->cart_contents_count;
- $cart_has_items = '';
- $output = '';
- if ( $cart_count != "0" ) {
- $cart_has_items = ' has-products';
- }
- $output .= '<a class="cart-contents mheader" href="' . wc_get_cart_url() . '" title="' . __( "View Cart", "woocommerce" ) . '">'
- . '<span class="cart-items' . $cart_has_items . '"><i class="icon icon-basket-full-alt"></i> ';
- if ( $cart_count != "0" ) {
- $output .= "<span>" . $cart_count . "</span>";
- }
- $output .= '</span></a>';
- return $output;
- }
- function kleo_woo_mobile_icon() {
- echo kleo_woo_get_mobile_icon();
- }
- if ( sq_option( 'woo_mobile_cart', 1 ) == 1 ) {
- add_action( 'kleo_mobile_header_icons', 'kleo_woo_mobile_icon' );
- }
- /* Remove items by AJAX */
- add_action( 'wp_ajax_kleo_woo_rem_item', 'kleo_woo_remove_item' );
- add_action( 'wp_ajax_nopriv_kleo_woo_rem_item', 'kleo_woo_remove_item' );
- function kleo_woo_remove_item() {
- global $woocommerce;
- $response = array();
- if ( ! isset( $_GET['kleo_item'] ) && ! isset( $_GET['_wpnonce'] ) ) {
- exit;
- }
- $instance = WC()->cart;
- $instance->set_quantity( $_GET['kleo_item'], 0 );
- do_action( 'woocommerce_cart_item_removed', $_GET['kleo_item'], $instance );
- $cart_count = $woocommerce->cart->cart_contents_count;
- $response['count'] = $cart_count != 0 ? $cart_count : "";
- $response['cart'] = kleo_woo_get_mini_cart( true );
- //widget cart update
- ob_start();
- woocommerce_mini_cart();
- $mini_cart = ob_get_clean();
- $response['widget'] = '<div class="widget_shopping_cart_content">' . $mini_cart . '</div>';
- echo json_encode( $response );
- exit;
- }
- if ( ! function_exists( 'kleo_checkout_steps' ) ) {
- /**
- * Print Woocommerce Checkout steps
- */
- function kleo_checkout_steps() {
- ?>
- <div class="checkout-steps">
- <span class="step-cart"><a
- href="<?php echo wc_get_cart_url(); ?>"><?php _e( 'Shopping Cart', 'kleo_framework' ); ?></a></span>
- <i class="icon icon-angle-right"></i>
- <span class="step-checkout"><?php _e( 'Checkout details', 'kleo_framework' ); ?></span>
- <i class="icon icon-angle-right"></i>
- <span class="step-complete"><?php _e( 'Order Complete', 'kleo_framework' ); ?></span>
- </div>
- <?php
- }
- }
- add_action( 'woocommerce_before_cart', 'kleo_checkout_steps' );
- add_action( 'woocommerce_before_checkout_page', 'kleo_checkout_steps' );
- /***************************************************
- * :: Custom main menu select for each page
- ***************************************************/
- function kleo_woo_set_custom_menu( $args = '' ) {
- if ( 'primary' != $args['theme_location'] && 'secondary' != $args['theme_location'] ) {
- return $args;
- }
- $shop_id = wc_get_page_id( 'shop' );
- if ( is_shop() ) {
- if ( 'primary' == $args['theme_location'] ) {
- $menuslug = get_cfield( 'page_menu', $shop_id );
- if ( ! empty( $menuslug ) && $menuslug != 'default' && is_nav_menu( $menuslug ) ) {
- $args['menu'] = $menuslug;
- }
- } elseif ( 'secondary' == $args['theme_location'] ) {
- $sec_menuslug = get_cfield( 'page_menu_secondary', $shop_id );
- if ( ! empty( $sec_menuslug ) && $sec_menuslug != 'default' && is_nav_menu( $sec_menuslug ) ) {
- $args['menu'] = $sec_menuslug;
- }
- }
- }
- return $args;
- } // END function kleo_set_custom_menu($args = '')
- add_filter( 'wp_nav_menu_args', 'kleo_woo_set_custom_menu', 11 );
- /* Append dynamic CSS */
- function kleo_woo_dynamic_css() {
- $h1 = sq_option( 'font_h1' );
- $extra_style = '';
- $extra_style .= '.percentage-badge { color: ' . sq_option( 'woo_percent_color', '#fff' ) . ' !important; background: ' . sq_option( 'woo_percent_bg', '#000' ) . ' !important; }';
- $extra_style .= 'body.single-product span.page-title { font-family: ' . $h1['font-family'] . ' !important; font-weight: ' . $h1['font-weight'] . ' !important; display:block; font-size: 26px; line-height: 34px; margin: 0; }';
- return $extra_style;
- }
- add_filter( 'kleo_add_dynamic_style', 'kleo_woo_dynamic_css' );
- function kleo_dynamic_alternate_func( $output, $section ) {
- $output .= 'body.single-product span.page-title { color: ' . $section['headings'] . '; }';
- return $output;
- }
- add_filter( 'kleo_dynamic_alternate', 'kleo_dynamic_alternate_func', 10, 2 );
- /* Visual composer integration */
- if ( defined( 'WPB_VC_VERSION' ) && version_compare( WPB_VC_VERSION, '4.4' ) < 0 ) {
- /**** Order Tracking ***/
- vc_map( array(
- "name" => "Order Tracking",
- "base" => "woocommerce_order_tracking",
- "icon" => "icon-wpb-woocommerce_order_tracking",
- "category" => 'Woocommerce',
- "allowed_container_element" => 'vc_row',
- "show_settings_on_create" => false
- ) );
- /*** Product price/cart button ***/
- vc_map( array(
- "name" => "Add to cart",
- "base" => "add_to_cart",
- "icon" => "icon-wpb-add_to_cart",
- "category" => 'Woocommerce',
- "allowed_container_element" => 'vc_row',
- "params" => array(
- array(
- "type" => "textfield",
- "holder" => "div",
- "class" => "",
- "heading" => "ID",
- "param_name" => "id",
- "description" => ""
- ),
- array(
- "type" => "textfield",
- "holder" => "div",
- "class" => "",
- "heading" => "SKU",
- "param_name" => "sku",
- "description" => ""
- )
- )
- ) );
- /*** Product by SKU/ID ***/
- vc_map( array(
- "name" => "Product by SKU/ID",
- "base" => "product",
- "icon" => "icon-wpb-product",
- "category" => 'Woocommerce',
- "allowed_container_element" => 'vc_row',
- "params" => array(
- array(
- "type" => "textfield",
- "holder" => "div",
- "class" => "",
- "heading" => "ID",
- "param_name" => "id",
- "description" => ""
- ),
- array(
- "type" => "textfield",
- "holder" => "div",
- "class" => "",
- "heading" => "SKU",
- "param_name" => "sku",
- "description" => ""
- )
- )
- ) );
- /*** Products by SKU/ID ***/
- vc_map( array(
- "name" => "Products by SKU/ID",
- "base" => "products",
- "icon" => "icon-wpb-products",
- "category" => 'Woocommerce',
- "allowed_container_element" => 'vc_row',
- "params" => array(
- array(
- "type" => "textfield",
- "holder" => "div",
- "class" => "",
- "heading" => "IDS",
- "param_name" => "ids",
- "description" => ""
- ),
- array(
- "type" => "textfield",
- "holder" => "div",
- "class" => "",
- "heading" => "SKUS",
- "param_name" => "skus",
- "description" => ""
- )
- )
- ) );
- /*** Product categories ***/
- vc_map( array(
- "name" => "Product categories",
- "base" => "product_categories",
- "icon" => "icon-wpb-product_categories",
- "category" => 'Woocommerce',
- "allowed_container_element" => 'vc_row',
- "params" => array(
- array(
- "type" => "textfield",
- "holder" => "div",
- "class" => "",
- "heading" => "Number",
- "param_name" => "number",
- "description" => ""
- )
- )
- ) );
- /*** Products by category slug ***/
- vc_map( array(
- "name" => "Products by category slug",
- "base" => "product_category",
- "icon" => "icon-wpb-product_category",
- "category" => 'Woocommerce',
- "allowed_container_element" => 'vc_row',
- "params" => array(
- array(
- "type" => "textfield",
- "holder" => "div",
- "class" => "",
- "heading" => "Category",
- "param_name" => "category",
- "description" => ""
- ),
- array(
- "type" => "textfield",
- "holder" => "div",
- "class" => "",
- "heading" => "Per Page",
- "param_name" => "per_page",
- "value" => "12"
- ),
- array(
- "type" => "textfield",
- "holder" => "div",
- "class" => "",
- "heading" => "Columns",
- "param_name" => "columns",
- "value" => "4"
- ),
- array(
- "type" => "dropdown",
- "holder" => "div",
- "class" => "",
- "heading" => "Order By",
- "param_name" => "order_by",
- "value" => array(
- "Date" => "date",
- "Title" => "title",
- ),
- "description" => ""
- ),
- array(
- "type" => "dropdown",
- "holder" => "div",
- "class" => "",
- "heading" => "Order",
- "param_name" => "order",
- "value" => array(
- "DESC" => "desc",
- "ASC" => "asc"
- ),
- "description" => ""
- )
- )
- ) );
- /*** Recent products ***/
- vc_map( array(
- "name" => "Recent products",
- "base" => "recent_products",
- "icon" => "icon-wpb-recent_products",
- "category" => 'Woocommerce',
- "allowed_container_element" => 'vc_row',
- "params" => array(
- array(
- "type" => "textfield",
- "holder" => "div",
- "class" => "",
- "heading" => "Per Page",
- "param_name" => "per_page",
- "value" => "12"
- ),
- array(
- "type" => "textfield",
- "holder" => "div",
- "class" => "",
- "heading" => "Columns",
- "param_name" => "columns",
- "value" => "4"
- ),
- array(
- "type" => "dropdown",
- "holder" => "div",
- "class" => "",
- "heading" => "Order By",
- "param_name" => "order_by",
- "value" => array(
- "Date" => "date",
- "Title" => "title",
- ),
- "description" => ""
- ),
- array(
- "type" => "dropdown",
- "holder" => "div",
- "class" => "",
- "heading" => "Order",
- "param_name" => "order",
- "value" => array(
- "DESC" => "desc",
- "ASC" => "asc"
- ),
- "description" => ""
- ),
- )
- ) );
- /*** Featured products ***/
- vc_map( array(
- "name" => "Featured products",
- "base" => "featured_products",
- "icon" => "icon-wpb-featured_products",
- "category" => 'Woocommerce',
- "allowed_container_element" => 'vc_row',
- "params" => array(
- array(
- "type" => "textfield",
- "holder" => "div",
- "class" => "",
- "heading" => "Per Page",
- "param_name" => "per_page",
- "value" => "12"
- ),
- array(
- "type" => "textfield",
- "holder" => "div",
- "class" => "",
- "heading" => "Columns",
- "param_name" => "columns",
- "value" => "4"
- ),
- array(
- "type" => "dropdown",
- "holder" => "div",
- "class" => "",
- "heading" => "Order By",
- "param_name" => "orderby",
- "value" => array(
- "Date" => "date",
- "Title" => "title",
- ),
- "description" => ""
- ),
- array(
- "type" => "dropdown",
- "holder" => "div",
- "class" => "",
- "heading" => "Order",
- "param_name" => "order",
- "value" => array(
- "DESC" => "desc",
- "ASC" => "asc"
- ),
- "description" => ""
- ),
- )
- ) );
- /**** Shop Messages ***/
- vc_map( array(
- "name" => "Shop Messages",
- "base" => "woocommerce_messages",
- "icon" => "icon-wpb-woocommerce_messages",
- "category" => 'Woocommerce',
- "allowed_container_element" => 'vc_row',
- "show_settings_on_create" => false
- ) );
- }
- /***************************************************
- * :: WooCommerce My Account Buddypress Integration
- ***************************************************/
- if ( function_exists( 'bp_is_active' ) && is_user_logged_in() && sq_option( 'woo_buddypress_menus', 1 ) == 1 ) {
- // Add the Orders tab to BuddyPress profile
- add_action( 'bp_setup_nav', 'kleo_woo_profile_nav_orders', 301 );
- function kleo_woo_profile_nav_orders() {
- $bp = buddypress();
- bp_core_new_nav_item(
- array(
- 'name' => __( 'Orders', 'woocommerce' ),
- 'slug' => 'orders',
- 'position' => 21,
- 'show_for_displayed_user' => false,
- 'screen_function' => 'bp_woo_orders_screen',
- 'default_subnav_slug' => 'my-orders',
- ) );
- }
- // Add submenus to Orders tab
- add_action( 'bp_setup_nav', 'kleo_woo_order_submenus', 302 );
- function kleo_woo_order_submenus() {
- $bp = buddypress();
- if ( version_compare( BP_VERSION, '2.6', '>=' ) ) {
- $url = $bp->members->nav->orders->slug;
- } else {
- $url = $bp->bp_nav['orders']['slug'];
- }
- bp_core_new_subnav_item(
- array(
- 'name' => __( 'My Orders', 'kleo_framework' ),
- 'slug' => 'my-orders',
- 'parent_url' => $bp->loggedin_user->domain . $url . '/',
- 'parent_slug' => $url,
- 'position' => 10,
- 'show_for_displayed_user' => false,
- 'screen_function' => 'kleo_woo_orders_screen',
- ) );
- bp_core_new_subnav_item(
- array(
- 'name' => __( 'My Downloads', 'kleo_framework' ),
- 'slug' => 'downloads',
- 'parent_url' => $bp->loggedin_user->domain . $url . '/',
- 'parent_slug' => $url,
- 'position' => 20,
- 'show_for_displayed_user' => false,
- 'screen_function' => 'kleo_woo_downloads_screen'
- ) );
- }
- // Load My Orders template
- function kleo_woo_orders_screen() {
- add_action( 'bp_template_content', 'kleo_woo_orders_screen_content' );
- bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) );
- }
- // Display My Orders screen
- function kleo_woo_orders_screen_content() {
- echo '<div class="woocommerce">';
- wc_get_template( 'myaccount/my-orders.php' );
- echo '</div>';
- }
- // Load My Downloads template
- function kleo_woo_downloads_screen() {
- add_action( 'bp_template_content', 'kleo_woo_downloads_screen_content' );
- bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) );
- }
- // Display My Downloads screen
- function kleo_woo_downloads_screen_content() {
- echo '<div class="woocommerce">';
- wc_get_template( 'myaccount/my-downloads.php' );
- echo '</div>';
- }
- // Add account settings into profile settings
- // Add address sub menu to settings menu
- add_action( 'bp_setup_nav', 'kleo_woo_address_submenu', 302 );
- function kleo_woo_address_submenu() {
- $bp = buddypress();
- if ( version_compare( BP_VERSION, '2.6', '>=' ) ) {
- $url = $bp->members->nav->settings->slug;
- } else {
- $url = $bp->bp_nav['settings']['slug'];
- }
- bp_core_new_subnav_item(
- array(
- 'name' => __( 'My Addresses', 'woocommerce' ),
- 'slug' => 'my-address',
- 'parent_url' => $bp->loggedin_user->domain . $url . '/',
- 'parent_slug' => $url,
- 'position' => 15,
- 'show_for_displayed_user' => false,
- 'screen_function' => 'kleo_woo_address_screen',
- ) );
- }
- // Load address template
- function kleo_woo_address_screen() {
- add_action( 'bp_template_content', 'kleo_woo_address_screen_content' );
- bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) );
- }
- // Load address screen
- function kleo_woo_address_screen_content() {
- echo '<div class="woocommerce">';
- wc_get_template( 'myaccount/form-edit-address.php', array(
- 'load_address' => ''
- ) );
- echo '</div>';
- }
- //Remove Settings > General screen and replace with woo account edit screen
- //add_action( 'bp_setup_nav', 'kleo_remove_general_settings' , 301 );
- function kleo_remove_general_settings() {
- bp_core_remove_subnav_item( 'settings', 'general' );
- }
- //Change default subnav for settings
- //add_action('bp_setup_nav', 'kleo_change_settings_subnav', 5);
- function kleo_change_settings_subnav() {
- $args = array(
- 'parent_slug' => 'settings',
- 'screen_function' => 'bp_woo_edit_account_screen',
- 'subnav_slug' => 'account'
- );
- bp_core_new_nav_default( $args );
- }
- // Add edit account sub menu
- //add_action( 'bp_setup_nav', 'kleo_woo_edit_account_submenu' , 302 );
- function kleo_woo_edit_account_submenu() {
- global $bp;
- bp_core_new_subnav_item(
- array(
- 'name' => __( 'Account', 'kleo_framework' ),
- 'slug' => 'account',
- 'parent_url' => $bp->loggedin_user->domain . $bp->bp_nav['settings']['slug'] . '/',
- 'parent_slug' => $bp->bp_nav['settings']['slug'],
- 'position' => 10,
- 'show_for_displayed_user' => false,
- 'screen_function' => 'kleo_woo_edit_account_screen',
- ) );
- }
- // Load account template
- function kleo_woo_edit_account_screen() {
- add_action( 'bp_template_content', 'kleo_woo_edit_account_screen_content' );
- bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) );
- }
- // Display edit account screen
- function kleo_woo_edit_account_screen_content() {
- echo '<div class="woocommerce">';
- wc_get_template( 'myaccount/form-edit-account.php', array( 'user' => get_user_by( 'id', get_current_user_id() ) ) );
- echo '</div>';
- }
- // Make sure we stay in Buddypress profile after edits
- add_action( 'woocommerce_customer_save_address', 'kleo_save_address_bp_redirect' );
- function kleo_save_address_bp_redirect() {
- global $bp;
- wp_safe_redirect( $bp->loggedin_user->domain . $bp->settings->slug . '/my-address/' );
- exit;
- }
- //add_action( 'woocommerce_save_account_details', 'kleo_save_account_bp_redirect' );
- function kleo_save_account_bp_redirect() {
- global $bp;
- wp_safe_redirect( $bp->loggedin_user->domain . $bp->settings->slug . '/account/' );
- exit;
- }
- // Add button on order detail screen to return to order list
- add_action( 'woocommerce_view_order', 'kleo_return_to_bp_order_list' );
- function kleo_return_to_bp_order_list() { ?>
- <?php global $bp; ?>
- <a href="<?php echo $bp->loggedin_user->domain . 'orders/'; ?>"
- title="<?php _e( 'View All Orders', 'kleo_framework' ); ?>"
- class="button"><?php _e( 'View All Orders', 'kleo_framework' ); ?></a>
- <?php }
- } else {
- // Add button on order detail screen to return to order list
- add_action( 'woocommerce_view_order', 'kleo_return_to_wc_order_list' );
- function kleo_return_to_wc_order_list() { ?>
- <a href="<?php echo get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ); ?>"
- title="<?php _e( 'View All Orders', 'kleo_framework' ); ?>"
- class="button"><?php _e( 'My Account', 'kleo_framework' ); ?></a>
- <?php
- }
- }
- /* Compatibility with Woocommerce < 2.4 */
- if ( ! function_exists( 'wc_dropdown_variation_attribute_options' ) ) {
- /**
- * Output a list of variation attributes for use in the cart forms.
- *
- * @param array $args
- *
- * @since 2.4.0
- */
- function wc_dropdown_variation_attribute_options( $args = array() ) {
- $args = wp_parse_args( apply_filters( 'woocommerce_dropdown_variation_attribute_options_args', $args ), array(
- 'options' => false,
- 'attribute' => false,
- 'product' => false,
- 'selected' => false,
- 'name' => '',
- 'id' => '',
- 'class' => '',
- 'show_option_none' => __( 'Choose an option', 'woocommerce' ),
- ) );
- $options = $args['options'];
- $product = $args['product'];
- $attribute = $args['attribute'];
- $name = $args['name'] ? $args['name'] : 'attribute_' . sanitize_title( $attribute );
- $id = $args['id'] ? $args['id'] : sanitize_title( $attribute );
- $class = $args['class'];
- $show_option_none = $args['show_option_none'] ? true : false;
- $show_option_none_text = $args['show_option_none'] ? $args['show_option_none'] : __( 'Choose an option', 'woocommerce' ); // We'll do our best to hide the placeholder, but we'll need to show something when resetting options.
- if ( empty( $options ) && ! empty( $product ) && ! empty( $attribute ) ) {
- $attributes = $product->get_variation_attributes();
- $options = $attributes[ $attribute ];
- }
- $html = '<select id="' . esc_attr( $id ) . '" class="' . esc_attr( $class ) . '" name="' . esc_attr( $name ) . '" data-attribute_name="attribute_' . esc_attr( sanitize_title( $attribute ) ) . '" data-show_option_none="' . ( $show_option_none ? 'yes' : 'no' ) . '">';
- $html .= '<option value="">' . esc_html( $show_option_none_text ) . '</option>';
- if ( ! empty( $options ) ) {
- if ( $product && taxonomy_exists( $attribute ) ) {
- // Get terms if this is a taxonomy - ordered. We need the names too.
- $terms = wc_get_product_terms( $product->get_id(), $attribute, array( 'fields' => 'all' ) );
- foreach ( $terms as $term ) {
- if ( in_array( $term->slug, $options ) ) {
- $html .= '<option value="' . esc_attr( $term->slug ) . '" ' . selected( sanitize_title( $args['selected'] ), $term->slug, false ) . '>' . esc_html( apply_filters( 'woocommerce_variation_option_name', $term->name ) ) . '</option>';
- }
- }
- } else {
- foreach ( $options as $option ) {
- // This handles < 2.4.0 bw compatibility where text attributes were not sanitized.
- $selected = sanitize_title( $args['selected'] ) === $args['selected'] ? selected( $args['selected'], sanitize_title( $option ), false ) : selected( $args['selected'], $option, false );
- $html .= '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( apply_filters( 'woocommerce_variation_option_name', $option ) ) . '</option>';
- }
- }
- }
- $html .= '</select>';
- echo apply_filters( 'woocommerce_dropdown_variation_attribute_options_html', $html, $args );
- }
- }
- if ( ! function_exists( 'woocommerce_single_variation' ) ) {
- add_action( 'woocommerce_single_variation', 'woocommerce_single_variation', 10 );
- /**
- * Output placeholders for the single variation.
- */
- function woocommerce_single_variation() {
- echo '<div class="single_variation"></div>';
- }
- }
- if ( ! function_exists( 'woocommerce_single_variation_add_to_cart_button' ) ) {
- /**
- * Output the add to cart button for variations.
- */
- function woocommerce_single_variation_add_to_cart_button() {
- wc_get_template( 'single-product/add-to-cart/variation-add-to-cart-button.php' );
- }
- }
- if ( ! function_exists( 'wc_get_stock_html' ) ) {
- /**
- * Get HTML to show product stock.
- * @since 3.0.0
- *
- * @param WC_Product $product
- *
- * @return string
- */
- function wc_get_stock_html( $product ) {
- $html = '';
- $availability = $product->get_availability();
- if ( ! empty( $availability['availability'] ) ) {
- ob_start();
- wc_get_template( 'single-product/stock.php', array(
- 'product' => $product,
- 'class' => $availability['class'],
- 'availability' => $availability['availability'],
- ) );
- $html = ob_get_clean();
- }
- if ( has_filter( 'woocommerce_stock_html' ) ) {
- wc_deprecated_function( 'The woocommerce_stock_html filter', '', 'woocommerce_get_stock_html' );
- $html = apply_filters( 'woocommerce_stock_html', $html, $availability['availability'], $product );
- }
- return apply_filters( 'woocommerce_get_stock_html', $html, $product );
- }
- }
- function kleo_title_args_singular_product( $args ) {
- if ( is_singular( 'product' ) ) {
- $args['heading'] = 'span';
- }
- return $args;
- }
- add_filter( 'kleo_title_args', 'kleo_title_args_singular_product' );
- /* Trigger the reviews tab when clicking on the reviews starts */
- function kleo_woocommerce_wp_footer() {
- if ( is_singular( 'product' ) ) {
- echo '<script>jQuery(document).ready(function(){ jQuery(\'a[href="#reviews"]\').on("click", function(){ jQuery(\'a[href="#reviews_tab"]\').trigger("click"); return false; }); });</script>';
- }
- }
- add_action( 'wp_footer', 'kleo_woocommerce_wp_footer' );
- /* Remove product loop link wrapper */
- remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 );
- remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );
- /* Srcset fix for variations */
- add_filter( 'woocommerce_available_variation', 'sq_remove_img_srcset_variations' );
- function sq_remove_img_srcset_variations( $attr ) {
- if ( ! empty( $attr ) ) {
- unset( $attr['image_srcset'] );
- unset( $attr['image_sizes'] );
- }
- return $attr;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement