Home Forums Search Search Results for 'ADDITIONAL INFORMATION products page'

Viewing 30 results - 61 through 90 (of 135 total)
  • Author
    Search Results
  • dido76bg
    Participant
    #275999

    If you want to remove it from all your single products pages it is possible to be done by css or function.

    If you want to remove it from a specific single product/s page it is posibble to be done only by function.

    Add this in your child theme functions file:

    function woo_remove_custom_product_tabs( $tabs ) {
    unset( $tabs[‘description’] );
    unset( $tabs[‘additional_information’] );
    return $tabs;
    }
    add_filter( ‘woocommerce_product_tabs’, ‘woo_remove_custom_product_tabs’, 98 );

    With css – just set display:none;

    In reply to: Hide tabs

    #272149

    Hello,

    Please remove the shopping information from the Theme Settings > Product page > Tabs.

    Then add the shipping information in the Additional tab on the product page in those products where you want to show this tab.

    Best Regards

    testing123
    Participant
    #271547

    Dear All,

    As many are waking up to the Core Web Vitals (including myself), I decided to write down in a few paragraphs my journey to improve the core web vitals of my site. Most of the recommendations probably apply to other themes as well but I’m using the fantastic theme Woodmart and saw great improvements when taking these actions.

    I am not affiliated to XTEMOS or any of the plugins I recommend here, these are simply the products that I use and work well for me (yes, I’ve tested many others). All recommendations are just my opinions from my experiences. I welcome others to please expand on this post and share their experiences of what works for them. It may not be complete or perfect – use at your own risk, make a backup of your site before you do any of this!

    1. I’m going to start out with an overlooked feature of woodmart that is extremely powerful and will shrink down your CSS dramatically. Especially when looking at core web vitals and google page speed this will have a positive effect on your score.
      1. Woodmart link -> CSS Generator
        Go through the list of CSS and turn off everything you don’t use. Save the file, clear your cache and check your site. Do this over and over again until you removed all the items you are not using
      2. Woodmart link -> (in case you use WPBakery) WPBakery CSS Generator (I unchecked all) and generated the file and no changes occurred to my site
    2. Ensure you are hosting your site on a reputable and fast hosting provider (hostgator, bluest etc. are not great) . I’m not going to make any recommendations here as I’m not quite sure about what the ‘best’ is. It all depends on how much money you are willing to spend. It will have a significant impact on general performance of your website.
    3. Use a CDN, if you don’t know what a CDN is, please google it.
    4. You have too many plugins, yes we all do (most likely). Each plugin will add it’s own JS, CSS and who knows what else. Go through your list of plugins and start deactivating AND deleting all plugins you are not using or perhaps it’s really not that important to have after all!. Really, delete these plugins, most issues are because of plugins, I still have too many, slowly working on eliminating them to bare minimum.
    5. Use a caching plugin, yes you need one! All WordPress sites need one in my opinion. I personally use WP-Rocket and it’s performed extremely well.
      1. Configuration for WP-Rocket (checkbox on the following)
      2. Enable Caching for mobile devices
      3. Minify CSS Files
      4. Optimize CSS Delivery
      5. Minify Javascript Files
      6. Load Javascript deferred
      7. Delay Javascript execution
      8. Lazyload -> enable for images
      9. Enable link preloading
      10. I added items to Prefetch DNS Requests – I’m not writing mine down as yours will probably be different
      11. I preload a font – I’m not writing mine down as yours will probably be different
      12. I added items to Cache Query String -I’m not writing mine down as yours will probably be different
      13. Control heartbeat – set all options to “reduce activity”
      14. At time of writing I’m NOT using webp caching YET as woodmart is not completely ready for webp implementation through imagify, once image dimensions are added everywhere I will consider this again and update this item. (Imagify I will touch on later, but it ads a picture element for webp, and that is a bit out of the scope for woodmart)
    6. Install an image optimizer, I started using imagify. It works, not the fastest but I choose it because I also use WP-Rocket and both plugins are owned by the same company so I’m hoping they work well together.
      1. Configuration for Imagify (checkbox on the following)
      2. Auto-optimize images on upload
      3. Backup original images
      4. Keep all EXIF data from your images (might not be important for you)
      5. Create web version of images
      6. I am NOT using “Display images in webp YET, imagify rewrites a picture tag when you have a CDN and it doesn’t work yet with woodmart, this is a limitation of Imagify in my opinion as it cannot set the rewrite rules properly when using a CDN.
      7. Resize larger images (I set it to 1600, but should probably be lower). If it doesn’t allow you to change this value to a lower setting reach out to support and they send you a plugin to suppress some of the weird large image sizes in WordPress.
    7. If you run a store with WooCommerce I recommend installing “Disable Cart Fragments” – google it

    I’m hopeful for the next version of woodmart to include more image dimension information and more tweaks to optimize the site. Ideally an additional option for modifying the CSS for mobile would be fantastic but I understand that is difficult.

    Thank you XTEMOS, Woodmart is a fantastic theme, hope this will help some people use your theme (or others) better.

    Again, my experiences – it may not be complete or perfect – use at your own risk, make a backup of your site before you do any of this! If you have better suggestions, please let us all know and write about it.

    All the best

    #268766

    Hello,

    Product tabs are the Woocommerce functionality. Our theme provides two more tabs: one global – for all the products and one individual.

    Description – is the main description on the product page. Can be created with a builder.

    Reviews are enabled/disabled in the Woocommerce > Settings > Product.

    Additional tab (with the attributes) enter each attribute in the product page and enable/disable showing on the product page to show this tab or enable to hide.

    Additional tab (Shipping information) You can edit it in the Theme Settings > Product page > Tabs: https://xtemos.com/docs/woodmart/html-blocks-2/#shipment_delivery Clean all the fields.

    If you need more tabs, you need to find a plugin.

    Best Regards

    In reply to: important

    #266912

    Hello,

    2) If you enable the option to display the “show attribute labels on the products” then the attribute will be displayed on the image.

    Screenshot for Clarification: https://ibb.co/k9sYR83

    3) Sorry but it is not possible to show a detailed description of the product on the shop page. You can only display a short description or additional information on the products.

    You can choose the product styles according to your needs from Theme Settings >> Shop >> Product Styles.

    Screenshot for Clarification: https://prnt.sc/zphn4i

    After enabling the product style please provide the URL of the shop page to check whether it is possible to show summary content without hover or not using Custom CSS.

    Regards.
    Xtemos Studios.

    www.cidev.ro
    Participant
    #261459

    Hello team,

    Our client wants to know if the following can be achieved using Woodmart:

    Taking this product page as an example:

    Coffee Table

    1. On the ,,Specifications” tab (formerly “additional information”) – can the information be arranged on two columns (on desktop, laptop and tablet at least)? Can a team member of yours make this customization? Our client is willing to pay for this. If this is possible, how can we get in touch?

    2. Can we add TWO extra tabs on the product page, in the form of HTML Blocks (just like with the Shipping & Delivery tab) – both tabs would show the exact same information for all products so it would be nice to be able to edit them from one place only.

    3. On the variable products page, (take the above as an example) – is it possible to show the actual price AND sale price right below the title? (All the variations will probably have the same price and sale price) I know both prices appear once you actually select a variation but can they be shown right below the title?

    4. How can the “HOT”, “NEW” and “SALE” labels be made smaller? Are you able to provide some sort of CSS for this, please?

    5. Our client also wants that, when you access the product page, that the colour variation indicating the actual color should be pressed by default, and also the client wants the names of the actual colors we are looking at to be visible just beneath the two round thumbnails (see product above) – in our case “Mahogany” & “Natur”, is that possible? And also what the client wants is that the actual attribute chosen to be highlighted in a more obvious way (for example, inside a square, or it should have a tick of some sort).

    Please let us know if any member of your team is willing to make these customizations and please let us know what the cost would be in each case.

    Kind Regards,

    ShakerMaker
    Participant
    #257750

    Hi Artem,

    We have four issues which we have been asking for help with for days and the same replies keep coming, which are not solving our issue:

    1) https://xtemos.com/forums/topic/3x-woodmart-qs-additional-info-size-guide-category-icons/
    Here we’re asking how to change the “Additional Information” label on the second tab on a product page – the one which shows the product attributes. We’ve been told to try the Loco Translate, this didn’t work and then we’ve been told to change a setting under Theme Settings, which isn’t there.

    2) https://xtemos.com/forums/topic/change-the-hot-label-on-products/
    The last reply – I refuse to believe there is no way of switching the “Hot” label to always appear above the “sale” attribute – I believe support just cannot be bothered to help on this one.

    3) https://xtemos.com/forums/topic/google-maps-error-4/
    Was told this error would be discussed with your dev team nearly three weeks back, but no reply since.

    4) https://xtemos.com/forums/topic/shop-sort-by-not-working-pricing-filter-help/
    The ‘Filter by Price’ slider – surely this can be used with another numerical attribute, as I’m using a Price Measurement plugin, so the “price” in the backend is not the actual “price” shown on the front end.

    Any actual help to these queries would be appreciated… every time I’ve asked support it has taken 4-5 questions to get an answer. I just need answers – not a drawn our conversions with Elise.

    Kind regards,
    Stewart

    Mandinga
    Participant
    #254576

    1) Ok, thanks!

    2) I have found an option in the attributes tab (Visible on the products page) Unchecking the box no longer shows the tab: additional information

    Attachments:
    You must be logged in to view attached files.
    #248318

    Hello,

    I can hide this information with custom CSS is it workable?

    .product p.wc-gzd-additional-info, 
    .product-quick-view p.wc-gzd-additional-info {
        display:none;
    }

    Or I can reduce the font size In any case the block on hover would overlap the products in the row below, you can consider using another hover design in the Theme Settings > Shop page > Product Style.

    Best Regards

    #248136

    Hello,

    Thank you very much for choosing our theme and for contacting us.

    1. Addition information (Shopping and Delivery) tab is edited in the Theme Settings > Product page > Tabs. If you mean Additional tab with the product attributes:

    You can translate/rewrite all theme and plugin texts via PO file in WordPress. Here is a video tutorial that should help you translate your website texts with a Loco Translate plugin https://www.youtube.com/watch?v=D3NsDdMzsls&list=PLMw6W4rAaOgKKv0oexGHzpWBg1imvrval&index=3

    Please check the video tutorial to see how to save the translation file correctly. You can remove the plugin and translations would remain. Also, translations would remain after each theme update.

    The same relates to # 2

    # 3 You need to open your SVG icons file with some editor like Sublime Text or default system text editor and add width=”31″ height=”40″ attributes to your <svg>tag like it is shown: http://prntscr.com/m4n0qw
    Then you will need to re-upload your icons in WordPress Dashboard.

    # 4 The product description content can be rebuilt with a page builder (WP bakery page builder or Elementor. You can add an extra content block to the page, here is the demo: https://woodmart.xtemos.com/shop/furniture/eames-lounge-chair/ and https://woodmart.xtemos.com/shop/furniture/ornare-auctor/ these blocks were built in Dashboard > HTML and the HTML block ID shortcode is added to the Extra content block: https://xtemos.com/docs/woodmart/product-page-options/#local_settings

    # 5 You can disable the reviews in the Woocommerce > Settings > Products.

    Best Regards

    sg5
    Participant
    #245116

    Hi support-team,

    I am almost done setting up my shop with the Woodmart-theme – it is so far really a great product, however, I am having some minor issues:

    1) Translation issue: I have already installed Loco and translated the theme. However, I can not find where I can change “register” on the my-account-page, when the user is logged-out (Register-Translation.png)

    2) Product-Grid with two-line title: I have enabled that the Products should show two-lines of the product title. Yet, then the items are not in one line. Is there a way to put all products into one line, regardless if they have 1-line title or 2-line title? Is there basically an option where I can set both to 2-lines (Product-Grid.png)

    3) Mobile-View-Issue: First of all, I know that your theme looks fine on mobile. However in order to make my shop EU-conform I had to install the Germanized-Plugin which adds additionally the shipping-cost and tax lines into the products. Yet, then this information totally overlays the product and it doesn’t look good at all. Did you maybe come across already that issue and do you maybe have a fix more me for that?

    Kindly regards!

    Attachments:
    You must be logged in to view attached files.
    #237342

    Hello,

    Thank you very much for choosing our theme and for contacting us.

    By default, Woocommerce does not provide the option to add the shipping information into the product page.

    If this information is common for all the products, you can insert it in the After /Before Add to cart button in the Theme Settings > Product page. https://xtemos.com/docs/woodmart/html-blocks-2/#before_after

    If it is individual for each product you can add such information by means of an additional tab or extra content block: https://xtemos.com/docs/woodmart/product-page-options/#local_settings

    Best Regards

    Mitrosha
    Participant
    #232819

    Ok…
    1. I have WCFM plugin and “About” tab on the vendor page. Screen: https://prnt.sc/uy7uk4
    2. I made a new additional tab on the products page. I used Woodmart to make it (Product page->Tabs). Screen: https://prnt.sc/uy7vji
    3. I put there a WCFM-shortcode to show information from “About” tab on the vendor’s page. Screen: https://prnt.sc/uy7x6v
    And it works well. Screen: https://prnt.sc/uy89xf

    After that I trying to use Woodmart HTML blocks inside WCFM “About” tab.
    1. I made new HTML block. Screen: https://prnt.sc/uy80mj
    2. I put HTML block shortcode inside WCFM “About” tab field. Screen: https://prnt.sc/uy829q
    And it works well on the WCFM “About” tab. Screen: https://prnt.sc/uy83ac
    BUT… it doesn’t work on the additional tab on the products page. Screen: https://prnt.sc/uy841j

    Giulio
    Participant
    #205428

    Hello there,

    I used this code to re-order the tabs, but now we’re starting to use the custom tab on products pages and I need to set the priority. What is it the element id to do that?

    Thanks.

    add_filter( 'woocommerce_product_tabs', 'woo_reorder_tabs', 98 );
    function woo_reorder_tabs( $tabs ) {
    
    	$tabs['reviews']['priority'] = 5;			// Reviews first
    	$tabs['additional_information']['priority'] = 15;	// Additional information third
    
    	return $tabs;
    }

    In reply to: edit product tab

    #195488

    Hello,

    Description – remove everything from the main description.

    Reviews are disabled in the Woocommerce > Settings > Product.

    Additional tab (with the attributes) enter each attribute in the product page and disable showing on the product page.

    Vendor information – disable the brands https://xtemos.com/docs/basel/faq-guides-2/how-to-setup-brands

    More products – it seems it is the additional tab in the product page, clean all the content.

    Best Regards

    In reply to: product creation

    #193317

    Hello,

    1) The swatches are form of product variations that are displayed on the product page in a different way of the default dropdowns. That you need to enable for each attribute item from Product >> Attributes.

    Screenshot for Clarification: https://ibb.co/q7TzYCz

    2) To set up countdown timer on the product you can read our detailed documentation in the following link:
    https://xtemos.com/docs/woodmart/faq-guides/display-countdown-timer-product/

    3) The tabs are controlled by woocommerce and the data is inserted according to the product information that you add. The only option in theme settings is to edit the Shipping & Delivery tab that is added as an additional tab. That you can access from Theme Settings >> Product Page >> Tabs.

    Screenshot for Clarification: https://ibb.co/k4xLqp2

    4) The review tab is also controlled by WooCommerce. You can enable/disable and made necessary settings that are provided under WooCommerce >> Settings >> Products.

    Screenshot for Clarification: https://ibb.co/Np8mr1w

    Best Regards.

    jaak69
    Participant
    #189340

    Hello,

    I’ve used woocommerce_after_shop_loop_item_title to add additional info after product price on category pages and this works OK. I’ve added information in the following way:

    • With ACF was created select box custom field. Select box option values are HTML Block shortcodes
    • WPML is set to copy it to all languages
    • For all select box values I’ve created corresponding HTML Block to keep things manageable for end users + WPML translations
    • WPML string translation is switching HTML Block shortcode according to languages
    • woocommerce_after_shop_loop_item_title hook function is reading custom field and do_shortcode is rendering it

    The problem with Ajax Products tabs:

    How it is possible to fix this?

    Because this site is production site this custom field HTML is hidden on front page through CSS (<div class=”transport-front”>).

    In reply to: Guides

    INKPT
    Participant
    #189106

    Hello

    it doesn’t work either. my products have to have weight, I have to add weight to the products. I’m going to contact a programmer to get this additional information bar where the weight appears …

    I have another problem to solve I can’t update the
    WPBakery Page Builder gives the following error:

    An error occurred while updating WPBakery Page Builder: To receive automatic updates license activation is required. Please visit Settings to activate your WPBakery Page Builder. Got WPBakery Page Builder in theme?

    WPBakery Page Builder is not included in woodmart?
    Do I have to buy a license to update it?

    greetings

    Uni-Crafterz
    Participant
    #186477

    Dear xtemos team,

    I’m facing the issue in single product page,

    When I’m click in additional information Tab it Redirects to -> you may like also products / similar products.

    500 internal server error :-
    When I’m login into my website as administrator, the 500 internal server error text appear’s

    This issue is only in Website dashboard.
    Rest all the pages are working fine.

    I’ve tried this also but not solved the problem -> https://www.wpbeginner.com/wp-tutorials/how-to-fix-the-internal-server-error-in-wordpress/

    I’ve attached a 2 short videos for better understanding.

    Videos link : https://we.tl/t-PkeQeHpU86

    Thanks
    Uni-Crafterz

    #185722

    Hello,

    Additional information in the product page can be added globally – the same for all the products and individually in each product.

    The global option is provided in the Theme Settings > Product page > Tabs > Additional information title and Additional information content. You can create HTML (WP Bakery page builder template), insert a row and divide it into as many columns as you need, and insert HTML ID into the content area.

    Enter any product page and you will find the option of an Additional tab, you can also insert HTML shortcode ID inside.

    Best Regards

    yogamat12
    Participant
    #173825

    What is the difference between main theme and child theme?

    Main issue – I am trying to remove the additional info tab from the product pages. I put in this css code on each product page as recommended from earlier posts. However, problem is that it also removes the long description, which I need.
    .product-tabs-wrapper {
    display: none;
    }

    Will this longer code solve above issue?
    If so, can you help me on where it goes? Not familiar or cant find functions.php
    add_filter( ‘woocommerce_product_tabs’, ‘woo_rename_tabs’, 98 );
    function woo_rename_tabs( $tabs ) {
    $tabs[‘description’][‘title’] = __( ‘Product Description’ ); // Rename the description tab
    return $tabs;
    }
    from link https://xtemos.com/forums/search/ADDITIONAL+INFORMATION+products+page/

    merishop
    Participant
    #169310

    1. How can I change “Related Products” text to “You May Also Like”?
    https://prnt.sc/qrht26

    2. I’m not planning to use long description or additional information. How can I remove the line shown in image.
    https://prnt.sc/qrhuc0

    3. Is it possible to show related products in a carousal?
    https://prnt.sc/qrhuzr

    4. How can I move short description below add to cart button and add a 1px border around it?
    https://prnt.sc/qrhvfs

    #168662

    Hello,

    1) You can change the “product-category” word from URL, you need to go to Settings >> Permalinks >> Product category base option, and replace the word.

    Screenshot for clarification: https://jmp.sh/3UGiop1

    2) When you set showing an attribute on the product page, WooCommerce generates an additional information tab and shows the attribute.

    In general the additional information tab only shown when you add attributes to the products. If you want to show the Additional information tab you have to add all those attributes from the product as in the screenshot: https://jmp.sh/2pFIr97

    Result: https://jmp.sh/AMlSqki

    To remove the additional information tab from your product page you can use the below custom code in your child theme funtion.php:

    add_filter( 'woocommerce_product_tabs', 'woo_remove_product_tabs', 98 );
    function woo_remove_product_tabs( $tabs ) {
        unset( $tabs['additional_information'] );  	// Remove the additional information tab
        return $tabs;
    }

    OR

    You can also remove it by disabling attributes added to products.

    This tab only display the information about the product attributes. You can not add other information inside this tab.

    Best Regards.

    wormholetattoo
    Participant
    #168653

    I want to know how to modify the url and additional content in the product page。

    1、After I built the website, I found out that my website URL is like this:
    https://wormholetattoosupply.com/product-category/tattoo-machines/tattoo-pens/,
    I want to remove product-category,Make my url like this:
    https://wormholetattoosupply.com/tattoo-machines/tattoo-pens/,
    Please tell me what should i do. thank you.

    2、I want to know how to modify the content here:https://wormholetattoosupply.com/wp-content/uploads/2020/01/Snipaste_2020-01-18_16-36-35.jpg ,The product I am exemplifying is here(https://wormholetattoosupply.com/products/aluminum-alloy-tattoo-pen-6-colors/).
    such as remove ADDITIONGAL INFORMATION, or modify it, or add other part to here?Where should I go to modify the content in the red box?

    Looking forward for your reply, thank you.

    Attachments:
    You must be logged in to view attached files.

    In reply to: Produkteigenschaften

    #166401

    Hello,

    Your question is not clear enough. If you mean product variations, please follow the instructions: A variable product is a product that has more than one option in attributes, for example, color, size, material. Instruction on how to create an attribute is here https://docs.woocommerce.com/document/managing-product-taxonomies/ as soon as the necessary attributes are available, a variable product can be created, instructions on how to create a variable product is here https://docs.woocommerce.com/document/variable-product/

    More information is here: https://xtemos.com/docs/woodmart/variable-products-swatches/

    If you mean the tabs, the first tab is the main description, and other additional inofrmation can be added as per instruction here: https://xtemos.com/docs/woodmart/product-page-options/

    Best Regards

    #165217

    Hello,

    An additional tab can be added globally: one for all the products (in the Theme Settings > Product page > Tabs > Additional tab and another tab can be added individually for each product on the product page. https://xtemos.com/docs/woodmart/options-for-pages/

    You can add two tabs max. If you need more tab you can check the below documentation for this purpose: https://docs.woocommerce.com/document/editing-product-data-tabs/

    The “About Brand” tab only display when you add brand attributes to some product. You can check the below documentation:
    https://xtemos.com/docs/woodmart/faq-guides/how-to-setup-brands/

    About the size guide if you want to make the same upper portion then simply edit your size guide with Wp-Bakery Page Builder from Dashboard >> Size Guides option and design your sidebar by creating two columns, in the very first column you have to use your image, and in the second column you have to use information box theme element with the help of Wp-Bakery Page builder.

    Also you can check the below documentation for more guidance:
    https://xtemos.com/docs/woodmart/faq-guides/create-size-guide-table/

    Best Regards.

    newsprince
    Participant
    #162826

    To XTEMOS Team and Artem Temos

    Based on the Feature Requests from @pacman1917

    I rewrote the Shop > Products Styles > Products grid with different sizes function
    creating the feature request pacman1917 wrote

    Please consider adding shop layout with mixed number of product per row, e.g. 3-4-3 and working with all product layouts. Like here – https://newnorth.fuelthemes.net/north-jewellery/shop/?shop_product_listing=style1

    This allow to do the alternating repeated pattern design in grid view

    3-2-3 for 3 column selected

    4-3-4 for 4 column selected

    5-4-5 for 5 column selected

    6-5-6 for 6 column selected

    I attach a screen recording bellow to see (on our demo environment)

    https://recordit.co/pMz87dsHfP

    Please review the code below and maybe implement it in a future release.

    Thank you.

    For anyone who wants to try it. Replace the code inside /wp-content/themes/woodmart/inc/integrations/woocommerce/functions.php
    with the one below

    <?php if ( ! defined( 'WOODMART_THEME_DIR' ) ) {
    	exit( 'No direct script access allowed' );
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Main loop
     * ------------------------------------------------------------------------------------------------
     */
    
    if( ! function_exists( 'woodmart_woocommerce_main_loop' ) ) {
    
    	add_action( 'woodmart_woocommerce_main_loop', 'woodmart_woocommerce_main_loop' );
    
    	function woodmart_woocommerce_main_loop( $fragments = false ) {
    		global $paged, $wp_query;
    
            $max_page = $wp_query->max_num_pages;
    
     		if ( $fragments ) ob_start();
    		
    		if ( $fragments && isset( $_GET['loop'] ) ) woodmart_set_loop_prop( 'woocommerce_loop', (int) sanitize_text_field( $_GET['loop'] ) );
    		
    		if ( woocommerce_product_loop() ) : ?>
    			
    			<?php if( ! $fragments ) woocommerce_product_loop_start(); ?>
    			
    			<?php if ( wc_get_loop_prop( 'total' ) || $fragments ): ?>
    				<?php while ( have_posts() ) : the_post(); ?>
    					
    					<?php
    					/**
    					 * Hook: woocommerce_shop_loop.
    					 *
    					 * @hooked WC_Structured_Data::generate_product_data() - 10
    					 */
    					do_action( 'woocommerce_shop_loop' );?>
    
    					<?php wc_get_template_part( 'content', 'product' ); ?>
    
    				<?php endwhile; // end of the loop. ?>
    			<?php endif; ?>
    			
    
    			<?php if( ! $fragments ) woocommerce_product_loop_end(); ?>
    
    			<?php
    				/**
    				 * woocommerce_after_shop_loop hook
    				 *
    				 * @hooked woocommerce_pagination - 10
    				 */
    				if( ! $fragments ) do_action( 'woocommerce_after_shop_loop' );
    			?>
    
    		<?php else: ?>
    			
    			<?php
    			/**
    			 * Hook: woocommerce_no_products_found.
    			 *
    			 * @hooked wc_no_products_found - 10
    			 */
    			do_action( 'woocommerce_no_products_found' ); ?>
    
    		<?php endif;
    
    		if ( $fragments ) $output = ob_get_clean();
    
    	    if( $fragments ) {
    	    	$output =  array(
    	    		'items' => $output,
    	    		'status' => ( $max_page > $paged ) ? 'have-posts' : 'no-more-posts',
    	    		'nextPage' => str_replace( '&', '&', next_posts( $max_page, false ) )
    	    	);
    
    	    	echo json_encode( $output );
    	    }
    	}
    }
    /**
     * ------------------------------------------------------------------------------------------------
     * Change number of products displayed per page
     * ------------------------------------------------------------------------------------------------
     */
    
    if( ! function_exists( 'woodmart_shop_products_per_page' ) ) {
    	function woodmart_shop_products_per_page() {
    		$per_page = 12;
    		$number = apply_filters('woodmart_shop_per_page', woodmart_get_products_per_page() );
    		if( is_numeric( $number ) ) {
    			$per_page = $number;
    		}
    		return $per_page;
    	}
    
    	add_filter( 'loop_shop_per_page', 'woodmart_shop_products_per_page', 20 );
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Set full width layouts for woocommerce pages on set up
     * ------------------------------------------------------------------------------------------------
     */
    
    if( ! function_exists( 'woodmart_woocommerce_install_actions' ) ) {
    	function woodmart_woocommerce_install_actions() {
    		if ( isset( $_GET['page'] ) && ! empty( $_GET['page'] ) && $_GET['page'] == 'wc-setup' && isset( $_GET['step'] ) && ! empty( $_GET['step'] ) && $_GET['step'] == 'next_steps') {
    			$pages = apply_filters( 'woocommerce_create_pages', array(
    				'cart' => array(
    					'name'    => _x( 'cart', 'Page slug', 'woodmart' ),
    					'title'   => _x( 'Cart', 'Page title', 'woodmart' ),
    					'content' => '[' . apply_filters( 'woocommerce_cart_shortcode_tag', 'woocommerce_cart' ) . ']'
    				),
    				'checkout' => array(
    					'name'    => _x( 'checkout', 'Page slug', 'woodmart' ),
    					'title'   => _x( 'Checkout', 'Page title', 'woodmart' ),
    					'content' => '[' . apply_filters( 'woocommerce_checkout_shortcode_tag', 'woocommerce_checkout' ) . ']'
    				),
    			) );
    
    			foreach ( $pages as $key => $page ) {
    				$option = 'woocommerce_' . $key . '_page_id';
    				$page_id = get_option( $option );
    				update_post_meta( $page_id, '_woodmart_main_layout', 'full-width' );
    			}
    
    			woodmart_woocommerce_image_dimensions();
    		}
    	}
    
    	add_action( 'admin_init', 'woodmart_woocommerce_install_actions', 1000);
    	add_action( 'admin_print_styles', 'woodmart_woocommerce_install_actions', 1000);
    }
    
    /**
     * Define image sizes
     */
    if( ! function_exists( 'woodmart_woocommerce_image_dimensions' ) ) {
    	function woodmart_woocommerce_image_dimensions() {
    		global $pagenow;
    	 
    		update_option( 'woocommerce_single_image_width', '1200' ); 		// Single product image
    		update_option( 'woocommerce_thumbnail_image_width', '600' ); 	// Gallery and catalog image
    	}
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Get base shop page link
     * ------------------------------------------------------------------------------------------------
     */
    
    if( ! function_exists( 'woodmart_shop_page_link' ) ) {
    	function woodmart_shop_page_link( $keep_query = false, $taxonomy = '' ) {
    		// Base Link decided by current page
    		if ( woodmart_is_shop_on_front() ) {
    			$link = home_url();
    		} elseif ( is_post_type_archive( 'product' ) || is_page( wc_get_page_id('shop') ) ) {
    			$link = get_post_type_archive_link( 'product' );
    		} elseif( is_product_category() ) {
    			$link = get_term_link( get_query_var('product_cat'), 'product_cat' );
    		} elseif( is_product_tag() ) {
    			$link = get_term_link( get_query_var('product_tag'), 'product_tag' );
    		} else {
    			$link = get_term_link( get_query_var('term'), get_query_var('taxonomy') );
    		}
    
    		if( $keep_query ) {
    
    			// Min/Max
    			if ( isset( $_GET['min_price'] ) ) {
    				$link = add_query_arg( 'min_price', wc_clean( $_GET['min_price'] ), $link );
    			}
    
    			if ( isset( $_GET['max_price'] ) ) {
    				$link = add_query_arg( 'max_price', wc_clean( $_GET['max_price'] ), $link );
    			}
    
    			// Orderby
    			if ( isset( $_GET['orderby'] ) ) {
    				$link = add_query_arg( 'orderby', wc_clean( $_GET['orderby'] ), $link );
    			}
    
    			/**
    			 * Search Arg.
    			 * To support quote characters, first they are decoded from &quot; entities, then URL encoded.
    			 */
    			if ( get_search_query() ) {
    				$link = add_query_arg( 's', rawurlencode( wp_specialchars_decode( get_search_query() ) ), $link );
    			}
    
    			// Post Type Arg
    			if ( isset( $_GET['post_type'] ) ) {
    				$link = add_query_arg( 'post_type', wc_clean( $_GET['post_type'] ), $link );
    			}
    
    			// Min Rating Arg
    			if ( isset( $_GET['min_rating'] ) ) {
    				$link = add_query_arg( 'min_rating', wc_clean( $_GET['min_rating'] ), $link );
    			}
    
    			// All current filters
    			if ( $_chosen_attributes = WC_Query::get_layered_nav_chosen_attributes() ) {
    				foreach ( $_chosen_attributes as $name => $data ) {
    					if ( $name === $taxonomy ) {
    						continue;
    					}
    					$filter_name = sanitize_title( str_replace( 'pa_', '', $name ) );
    					if ( ! empty( $data['terms'] ) ) {
    						$link = add_query_arg( 'filter_' . $filter_name, implode( ',', $data['terms'] ), $link );
    					}
    					if ( 'or' == $data['query_type'] ) {
    						$link = add_query_arg( 'query_type_' . $filter_name, 'or', $link );
    					}
    				}
    			}
    		}
    
    		if ( is_string( $link ) ) {
    			return $link;
    		} else {
    			return '';
    		}
    	}
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Get product design option
     * ------------------------------------------------------------------------------------------------
     */
    
    if ( ! function_exists( 'woodmart_product_design' ) ) {
    	function woodmart_product_design() {
    		$design = woodmart_get_opt( 'product_design' );
    		if( is_singular( 'product' ) ) {
    			$custom = get_post_meta( get_the_ID(), '_woodmart_product_design', true );
    			if( ! empty( $custom ) && $custom != 'inherit' ) $design = $custom;
    		}
    
    		return $design;
    	}
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Is product sticky
     * ------------------------------------------------------------------------------------------------
     */
    
    if ( ! function_exists( 'woodmart_product_sticky' ) ) {
    	function woodmart_product_sticky() {
    		$sticky = woodmart_get_opt( 'product_sticky' ) && in_array( woodmart_get_opt( 'single_product_style' ), array( 1, 2, 3 ) ) ? true : false;
    		if( is_singular( 'product' ) ) {
    			$custom = get_post_meta( get_the_ID(), '_woodmart_product_sticky', true );
    			if( ! empty( $custom ) && $custom != 'inherit' ) $sticky = $custom;
    		}
    
    		return $sticky;
    	}
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Register new image size two times larger than standard woocommerce one
     * ------------------------------------------------------------------------------------------------
     */
    
    if( ! function_exists( 'woodmart_add_image_size' ) ) {
    	add_action( 'after_setup_theme', 'woodmart_add_image_size' );
    	
    	function woodmart_add_image_size() {
    		
    		if( ! function_exists( 'wc_get_image_size' ) ) return;
    		
    		$shop_catalog = wc_get_image_size( 'woocommerce_thumbnail' );
    		
    		$width = (int) ( $shop_catalog['width'] * 2 );
    		$height = ( !empty( $shop_catalog['height'] ) ) ? (int) ( $shop_catalog['height'] * 2 ) : '';
    		
    		add_image_size( 'woodmart_shop_catalog_x2', $width, $height, $shop_catalog['crop'] );
    	}
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Custom thumbnail function for slider
     * ------------------------------------------------------------------------------------------------
     */
    
    if ( ! function_exists( 'woodmart_template_loop_product_thumbnail' ) ) {
    	function woodmart_template_loop_product_thumbnail() {
    		echo woodmart_get_product_thumbnail();
    	}
    }
    
    if ( ! function_exists( 'woodmart_get_product_thumbnail' ) ) {
    	function woodmart_get_product_thumbnail( $size = 'woocommerce_thumbnail', $attach_id = false ) {
    		global $post;
    		$custom_size = $size;
    
    		$defined_sizes = array('woocommerce_thumbnail', 'woodmart_shop_catalog_x2');
    		
    		if( woodmart_loop_prop( 'double_size' ) ) {
    			$size = 'woodmart_shop_catalog_x2';
    		}
    
    		if ( has_post_thumbnail() ) {
    
    			if( ! $attach_id ) $attach_id = get_post_thumbnail_id();
    
    			$props = wc_get_product_attachment_props( $attach_id, $post );
    			
    			if( woodmart_loop_prop( 'img_size' ) ) {
    				$custom_size = woodmart_loop_prop( 'img_size' );
    			}
    			
    			$custom_size = apply_filters( 'woodmart_custom_img_size', $custom_size );
    			
    			if( ! in_array( $custom_size, $defined_sizes ) && function_exists( 'wpb_getImageBySize' ) ) {
    				$img = wpb_getImageBySize( array( 'attach_id' => $attach_id, 'thumb_size' => $custom_size, 'class' => 'content-product-image' ) );
    				$img = $img['thumbnail'];
    
    			} else {
    				$img = wp_get_attachment_image( $attach_id, $size, array(
    					'title'	 => $props['title'],
    					'alt'    => $props['alt'],
    				) );
    			}
    
    			return $img;
    
    		} elseif ( wc_placeholder_img_src() ) {
    			return wc_placeholder_img( $size );
    		}
    	}
    }
    
    remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );
    add_action( 'woocommerce_before_shop_loop_item_title', 'woodmart_template_loop_product_thumbnail', 10 );
    
    if( ! function_exists( 'woodmart_grid_swatches_attribute' ) ) {
    	function woodmart_grid_swatches_attribute() {
    		$custom = get_post_meta(get_the_ID(),  '_woodmart_swatches_attribute', true );
    		return empty( $custom ) ? woodmart_get_opt( 'grid_swatches_attribute' ) : $custom;
    	}
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Get product page classes (columns) for product images and product information blocks
     * ------------------------------------------------------------------------------------------------
     */
    
    if( ! function_exists( 'woodmart_product_images_class' ) ) {
    	function woodmart_product_images_class() {
    		$size = woodmart_product_images_size();
    		$layout = woodmart_get_opt( 'single_product_style' );
    		
    		$class = 'col-lg-' . $size . ' col-12';
    
    		$class .= ( $layout == 4 || $layout == 5 ) ? ' col-md-12' : ' col-md-6';
    
    		return $class;
    	}
    
    	function woodmart_product_images_size() {
    		$summary_size = ( woodmart_product_summary_size() == 12 ) ? 12 : 12 - woodmart_product_summary_size();
    		return apply_filters( 'woodmart_product_summary_size', $summary_size );
    	}
    }
    
    if( ! function_exists( 'woodmart_product_summary_class' ) ) {
    	function woodmart_product_summary_class() {
    		$size = woodmart_product_summary_size();
    		$layout = woodmart_get_opt( 'single_product_style' );
    		
    		$class = 'col-lg-' . $size . ' col-12';
    
    		$class .= ( $layout == 4 || $layout == 5 ) ? ' col-md-12' : ' col-md-6';
    
    		if ( woodmart_get_opt( 'single_product_variations_price' ) ) {
    			$class .= ' woodmart-price-outside';
    		}
    
    		return $class;
    	}
    
    	function woodmart_product_summary_size() {
    		$page_layout = woodmart_get_opt( 'single_product_style' );
    
    		$size = 6;
    		switch ( $page_layout ) {
    			case 1:
    				$size = 8;
    			break;
    			case 2:
    				$size = 6;
    			break;
    			case 3:
    				$size = 4;
    			break;
    			case 4:
    				$size = 12;
    			break;
    			case 5:
    				$size = 12;
    			break;
    		}
    		return apply_filters( 'woodmart_product_summary_size', $size );
    	}
    }
    
    if( ! function_exists( 'woodmart_single_product_class' ) ) {
    	function woodmart_single_product_class() {
    		$classes = array();
    		$classes[] = 'single-product-page';
    		$classes[] = 'single-product-content';
    
    		$design = woodmart_product_design();
    		$product_bg  = woodmart_get_opt( 'product-background' );
    		$page_layout = woodmart_get_opt( 'single_product_style' );
    		
    		$classes[] = 'product-design-' . $design;
    		$classes[] = 'tabs-location-' . woodmart_get_opt( 'product_tabs_location' );
    		$classes[] = 'tabs-type-' . woodmart_get_opt( 'product_tabs_layout' );
    		$classes[] = 'meta-location-' . woodmart_get_opt( 'product_show_meta' );
    		$classes[] = 'reviews-location-' . woodmart_get_opt( 'reviews_location' );
    
    		if( $design == 'alt' ) {
    			$classes[] = 'product-align-center';
    		}
    
    		if( $page_layout == 4 || $page_layout == 5 ) {
    			$classes[] = 'image-full-width';
    		}
    
    		if( woodmart_get_opt( 'single_full_width' ) ) {
    			$classes[] = 'product-full-width';
    		}
    
    		if( woodmart_get_opt( 'product_summary_shadow' ) ) {
    			$classes[] = 'product-summary-shadow';
    		}
    
    		if( woodmart_product_sticky() ) {
    			$classes[] = 'product-sticky-on';
    		}
    
    		if( ! empty( $product_bg ) &&  ! empty( $product_bg['background-color'] ) ) {
    			$classes[] = 'product-has-bg';
    		} else {
    			$classes[] = 'product-no-bg';
    		}
    
    		return $classes;
    
    	}
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Configure product image gallery JS
     * ------------------------------------------------------------------------------------------------
     */
    
    if( ! function_exists( 'woodmart_get_product_gallery_settings' ) ) {
    	function woodmart_get_product_gallery_settings() {
    		return apply_filters( 'woodmart_product_gallery_settings', array(
    			'images_slider' => woodmart_is_main_product_images_carousel(),
    			'thumbs_slider' => array(
    				'enabled' => woodmart_is_product_thumb_enabled(),
    				'position' => woodmart_get_opt('thums_position'),
    				'items' => array(
    					'desktop' => 4,
    					'tablet_landscape' => 3,
    					'tablet' => 4,
    					'mobile' => 3,
    					'vertical_items' => 3
    				)
    			)
    		) );
    	}
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Remove product content link
     * ------------------------------------------------------------------------------------------------
     */
    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 );
    
    remove_action( 'woocommerce_before_subcategory', 'woocommerce_template_loop_category_link_open', 10 );
    remove_action( 'woocommerce_after_subcategory', 'woocommerce_template_loop_category_link_close', 10 );
    
    /**
     * ------------------------------------------------------------------------------------------------
     * WooCommerce enqueues 3 stylesheets by default. You can disable them all with the following snippet
     * ------------------------------------------------------------------------------------------------
     */
    
    add_filter( 'woocommerce_enqueue_styles', '__return_empty_array' );
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Disable photoswipe
     * ------------------------------------------------------------------------------------------------
     */
    
    remove_action( 'wp_footer', 'woocommerce_photoswipe' );
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Remove ordering from toolbar
     * ------------------------------------------------------------------------------------------------
     */
    
    remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 );
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Unhook the WooCommerce wrappers
     * ------------------------------------------------------------------------------------------------
     */
    
    remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10);
    remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10);
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Disable default product zoom init
     * ------------------------------------------------------------------------------------------------
     */
    add_filter( 'woocommerce_single_product_zoom_enabled', '__return_false' );
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Get CSS class for widget in shop area. Based on the number of widgets
     * ------------------------------------------------------------------------------------------------
     */
    
    if( ! function_exists( 'woodmart_get_widget_column_class' ) ) {
    	function woodmart_get_widget_column_class( $sidebar_id = 'filters-area' ) {
    		global $_wp_sidebars_widgets;
    		if ( empty( $_wp_sidebars_widgets ) ) :
    			$_wp_sidebars_widgets = get_option( 'sidebars_widgets', array() );
    		endif;
    		
    		$sidebars_widgets_count = $_wp_sidebars_widgets;
    
    		if ( isset( $sidebars_widgets_count[ $sidebar_id ] ) || $sidebar_id == 'filters-area' ) {
    			$count = ( isset( $sidebars_widgets_count[ $sidebar_id ] ) ) ? count( $sidebars_widgets_count[ $sidebar_id ] ) : 0;
    			$widget_count = apply_filters( 'widgets_count_' . $sidebar_id, $count );
    			$widget_classes = 'widget-count-' . $widget_count;
    			$column = 4;
    			if ( $widget_count < 4 && $widget_count != 0 ) {
    				$column = $widget_count;
    			}
    			$widget_classes .= woodmart_get_grid_el_class( 0, $column, false, 12, 6, 6 );
    			return apply_filters( 'widget_class_' . $sidebar_id, $widget_classes);
    		}
    	}
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Play with woocommerce hooks
     * ------------------------------------------------------------------------------------------------
     */
    
    if( ! function_exists( 'woodmart_woocommerce_hooks' ) ) {
    	function woodmart_woocommerce_hooks() {
            global $woodmart_prefix;
    
            $product_meta_position = woodmart_get_opt( 'product_show_meta' );
            $product_show_meta = ( $product_meta_position != 'hide' );
            $product_show_share = woodmart_get_opt( 'product_share' );
            $product_show_desc = woodmart_get_opt( 'product_short_description' );
            $tabs_location = woodmart_get_opt( 'product_tabs_location' );
            $reviews_location = woodmart_get_opt( 'reviews_location' );
    
    		remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15 );
    		remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 );
    
    		// Reviews location
    		if( $reviews_location == 'separate' ) {
    			add_filter( 'woocommerce_product_tabs', 'woodmart_disable_reviews_tab', 98 );
    			add_action( 'woocommerce_after_single_product_summary', 'comments_template', 50 );
    		}
    
    		// Upsells position
    		if( is_singular( 'product' ) ) {
    			if( woodmart_get_opt( 'upsells_position' )  == 'sidebar' ) {
    				add_action( 'woodmart_before_sidebar_area', 'woocommerce_upsell_display', 20 );
    			} else {
    				add_action( 'woodmart_woocommerce_after_sidebar', 'woocommerce_upsell_display', 10 );
    			}
    		}
    
    		// Disable related products option
    		if( woodmart_get_opt('related_products') && ! get_post_meta(get_the_ID(),  '_woodmart_related_off', true ) ) {
    			add_action( 'woodmart_woocommerce_after_sidebar', 'woocommerce_output_related_products', 20 );
    		}
    
    		// Disable product tabs title option
    		if( woodmart_get_opt('hide_tabs_titles') || get_post_meta(get_the_ID(),  '_woodmart_hide_tabs_titles', true ) ) {
    			add_filter( 'woocommerce_product_description_heading', '__return_false', 20 );
    			add_filter( 'woocommerce_product_additional_information_heading', '__return_false', 20 );
    		}
    
    		if( woodmart_get_opt('shop_filters') ) {
     			
     			// Use our own order widget list?
    			if( apply_filters( 'woodmart_use_custom_order_widget', true ) ) {
    				if( ! is_active_widget( false, false, 'woodmart-woocommerce-sort-by', true ) ) {
    					add_action( 'woodmart_before_filters_widgets', 'woodmart_sorting_widget', 10 );
    				}
    				if ( woodmart_get_opt( 'shop_filters_type' ) == 'widgets' ) {
    					remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 );
    				}
    			}
    
    			// Use our custom price filter widget list?
    			if( apply_filters( 'woodmart_use_custom_price_widget', true )  && ! is_active_widget( false, false, 'woodmart-price-filter', true ) ) {
    				add_action( 'woodmart_before_filters_widgets', 'woodmart_price_widget', 20 );
    			}
    
    			// Add 'filters button'
    			add_action( 'woocommerce_before_shop_loop', 'woodmart_filter_buttons', 40 );
    		}
    
    		add_action( 'woocommerce_cart_is_empty', 'woodmart_empty_cart_text', 20 );
    
    		/**
    		 * Remove default empty cart text
    		 */
    		remove_action( 'woocommerce_cart_is_empty', 'wc_empty_cart_message', 10 );
    
    		// Wrapp cart totals
    
    		add_action( 'woocommerce_before_cart_totals', function() {
    			echo '<div class="cart-totals-inner">';
    		}, 1);
    		add_action( 'woocommerce_after_cart_totals', function() {
    			echo '</div><!--.cart-totals-inner-->';
    		}, 200);
    
    		// Brand tab for single product
    		if( woodmart_get_opt( 'brand_tab' ) ) {
    			add_filter( 'woocommerce_product_tabs', 'woodmart_product_brand_tab' );
    		}
    
    		// Poduct brand
    		if( woodmart_get_opt( 'product_brand_location' ) == 'about_title' && is_singular( 'product' ) ) {
    			add_action( 'woocommerce_single_product_summary', 'woodmart_product_brand', 3);
    		} elseif( is_singular( 'product' )) {
    			add_action( 'woodmart_before_sidebar_area', 'woodmart_product_brand', 10 );
    		}
    
    		// Product share
    
    		if ( $product_meta_position != 'after_tabs' && $product_show_share ) {
    			add_action( 'woocommerce_single_product_summary', 'woodmart_product_share_buttons', 60 );
    		}
    
    		// Disable meta and description if turned off
    		if ( $product_meta_position != 'add_to_cart' ) {
    			remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );
    		}
    
    		if ( ! $product_show_desc ) {
    			remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20 );
    		}
    
    		// Product tabs location
    
    		if( $tabs_location == 'summary' ) {
    			remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10 );
    			add_action( 'woocommerce_single_product_summary', 'woocommerce_output_product_data_tabs', 39 );
    		}
    
    		if ( $product_meta_position == 'after_tabs' ) {
    			add_action( 'woodmart_after_product_tabs', function() {
    				echo '<div class="woodmart-before-product-tabs"><div class="container">';
    			}, 10 );
    
    			remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );
    			if( $product_show_meta ) add_action( 'woodmart_after_product_tabs', 'woocommerce_template_single_meta', 20 );
    			if( $product_show_share ) add_action( 'woodmart_after_product_tabs', 'woodmart_product_share_buttons', 30 );
    
    			add_action( 'woodmart_after_product_tabs', function() {
    				echo '</div></div>';
    			}, 200 );
    		}
    
    		// Product video, 360 view, zoom
    		$video_url = get_post_meta(get_the_ID(),  '_woodmart_product_video', true );
    		$images_360_gallery = woodmart_get_360_gallery_attachment_ids();
    		$image_action = woodmart_get_opt( 'image_action' );
    
    		if( ! empty( $video_url ) || ! empty( $images_360_gallery ) || ! empty( $image_action ) ) {
    			add_action( 'woodmart_on_product_image', 'woodmart_additional_galleries_open', 25 );
    			add_action( 'woodmart_on_product_image', 'woodmart_additional_galleries_close', 100 );
    		}
    		
    		if( ! empty( $video_url ) ) {
    			add_action( 'woodmart_on_product_image', 'woodmart_product_video_button', 30 );
    		}
    
    		if( ! empty( $images_360_gallery ) ) {
    			add_action( 'woodmart_on_product_image', 'woodmart_product_360_view', 40 );
    		}
    
    		if( $image_action != 'popup' && woodmart_get_opt( 'photoswipe_icon' ) ) {
    			add_action( 'woodmart_on_product_image', 'woodmart_product_zoom_button', 50 );
    		}
    
    		// Custom extra content
    		$extra_block = get_post_meta(get_the_ID(),  '_woodmart_extra_content', true );
    
    		if( ! empty( $extra_block ) && $extra_block != 0 ) {
    			$extra_position = get_post_meta(get_the_ID(),  '_woodmart_extra_position', true );
    			if( $extra_position == 'before' ) {
    				add_action( 'woocommerce_before_single_product', 'woodmart_product_extra_content', 20 );
    			} else if( $extra_position == 'prefooter' ) {
    				add_action( 'woodmart_woocommerce_after_sidebar', 'woodmart_product_extra_content', 30 );
    			} else {
    				add_action( 'woodmart_after_product_content', 'woodmart_product_extra_content', 20 );
    				
    			}
    		}
    
    		// Custom tabs
    		add_filter( 'woocommerce_product_tabs', 'woodmart_custom_product_tabs' );
    
    		// Timer on the single product page
    		add_action( 'woocommerce_single_product_summary', 'woodmart_single_product_countdown', 15 );
    
    		// Instagram by hashbat for product
    		add_action( 'woodmart_woocommerce_after_sidebar', 'woodmart_product_instagram', 80 );
    
    		// Cart page move totals
    		remove_action( 'woocommerce_cart_collaterals', 'woocommerce_cart_totals', 10 );
    
    		//Product attibutes after of short description
    		if ( woodmart_get_opt( 'attr_after_short_desc' ) ) {
    			add_action( 'woocommerce_single_product_summary', 'woodmart_display_product_attributes', 21 );
    			add_filter( 'woocommerce_product_tabs', 'woodmart_remove_additional_information_tab', 98 );
    		}
    
    		//Single product stock progress bar
    		if ( woodmart_get_opt( 'single_stock_progress_bar' ) ) {
    			add_action( 'woocommerce_single_product_summary', 'woodmart_stock_progress_bar', 16 );
    		}
    	}
    
    	add_action( 'wp', 'woodmart_woocommerce_hooks', 1000 );
    }
    
    if( ! function_exists( 'woodmart_single_product_countdown' ) ) {
    	function woodmart_single_product_countdown( $tabs ) {
    		$timer = woodmart_get_opt( 'product_countdown' );
    		if( $timer ) woodmart_product_sale_countdown();
    	}
    }
    
    if( ! function_exists( 'woodmart_display_product_attributes' ) ) {
    	function woodmart_display_product_attributes() {
    		global $product;
    		if ( $product && ( $product->has_attributes() || apply_filters( 'wc_product_enable_dimensions_display', $product->has_weight() || $product->has_dimensions() ) ) ) {
    			wc_display_product_attributes( $product );
    		}
    	}
    }
    
    if( ! function_exists( 'woodmart_remove_additional_information_tab' ) ) {
    	function woodmart_remove_additional_information_tab( $tabs ) {
    		unset( $tabs['additional_information'] );
    		return $tabs;
    	}
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Additional tab
     * ------------------------------------------------------------------------------------------------
     */
    
    if( ! function_exists( 'woodmart_custom_product_tabs' ) ) {
    	function woodmart_custom_product_tabs( $tabs ) {
    		$additional_tab_title = woodmart_get_opt( 'additional_tab_title' );
    		$custom_tab_title = get_post_meta( get_the_ID(),  '_woodmart_product_custom_tab_title', true );
    		
    		if ( $additional_tab_title ) {
    			$tabs['woodmart_additional_tab'] = array(
    				'title' 	=> $additional_tab_title,
    				'priority' 	=> 50,
    				'callback' 	=> 'woodmart_additional_product_tab_content'
    			);
    		}
    		
    		if ( $custom_tab_title ) {
    			$tabs['woodmart_custom_tab'] = array(
    				'title' 	=> $custom_tab_title,
    				'priority' 	=> 60,
    				'callback' 	=> 'woodmart_custom_product_tab_content'
    			);
    		}
    		
    		return $tabs;
    	}
    }
    
    if( ! function_exists( 'woodmart_additional_product_tab_content' ) ) {
    	function woodmart_additional_product_tab_content() {
    		// The new tab content
    		$tab_content = woodmart_get_opt( 'additional_tab_text' );
    		echo do_shortcode( $tab_content );
    		
    	}
    }
    
    if( ! function_exists( 'woodmart_custom_product_tab_content' ) ) {
    	function woodmart_custom_product_tab_content() {
    		// The new tab content
    		$tab_content = get_post_meta( get_the_ID(),  '_woodmart_product_custom_tab_content', true );
    		echo do_shortcode( $tab_content );
    	}
    }
    
    if( ! function_exists( 'woodmart_disable_reviews_tab' ) ) {
    	function woodmart_disable_reviews_tab( $tabs ) {
    	    unset( $tabs['reviews'] );  // Removes the reviews tab
    	    return $tabs;
    	}
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Filters buttons
     * ------------------------------------------------------------------------------------------------
     */
    
    if( ! function_exists( 'woodmart_filter_widgts_classes' ) ) {
    	function woodmart_filter_widgts_classes( $count ) {
    
    		if( apply_filters( 'woodmart_use_custom_order_widget', true )  && ! is_active_widget( false, false, 'woodmart-woocommerce-sort-by', true ) ) {
    			$count++;
    		}
    
    		if( apply_filters( 'woodmart_use_custom_price_widget', true )  && ! is_active_widget( false, false, 'woodmart-price-filter', true ) ) {
    			$count++;
    		}
    
    		return $count;
    	}
    
    	add_filter('widgets_count_filters-area', 'woodmart_filter_widgts_classes');
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Force WOODMART Swatche layered nav and price widget to work
     * ------------------------------------------------------------------------------------------------
     */
    
    add_filter( 'woocommerce_is_layered_nav_active', 'woodmart_is_layered_nav_active' );
    if( ! function_exists( 'woodmart_is_layered_nav_active' ) ) {
    	function woodmart_is_layered_nav_active() {
    		return is_active_widget( false, false, 'woodmart-woocommerce-layered-nav', true );
    	}
    }
    
    add_filter( 'woocommerce_is_price_filter_active', 'woodmart_is_layered_price_active' );
    
    if( ! function_exists( 'woodmart_is_layered_price_active' ) ) {
    	function woodmart_is_layered_price_active() {
    		$result = is_active_widget( false, false, 'woodmart-price-filter', true );
    		if( ! $result ) {
    			$result = apply_filters( 'woodmart_use_custom_price_widget', true );
    		}
    		return $result;
    	}
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Change the position of woocommerce breadcrumbs
     * ------------------------------------------------------------------------------------------------
     */
    remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20 );
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Add photoswipe template to body
     * ------------------------------------------------------------------------------------------------
     */
    add_action( 'woodmart_after_footer', 'woodmart_photoswipe_template', 1000 );
    if( ! function_exists( 'woodmart_photoswipe_template' ) ) {
    	function woodmart_photoswipe_template() {
    		get_template_part('woocommerce/single-product/photo-swipe-template');
    	}
    }
    
    // **********************************************************************//
    // ! Start woocommerce customer session
    // **********************************************************************//
    
    if( ! function_exists( 'woodmart_set_customer_session' ) ) {
    
    	add_action( 'woodmart_before_shop_page', 'woodmart_set_customer_session', 10 );
    
    	function woodmart_set_customer_session() {
    		if( ! function_exists( 'WC' ) ) return;
    		if ( WC()->version > '2.1' && ( ! is_admin() || defined( 'DOING_AJAX' ) ) && ! defined( 'DOING_CRON' ) ) :
    			WC()->session->set_customer_session_cookie( true );
    		endif;
    	}
    }
    
    // **********************************************************************//
    // ! Items per page select on the shop page
    // **********************************************************************//
    
    if( ! function_exists( 'woodmart_products_per_page_action' ) ) {
    
    	add_action( 'woodmart_before_shop_page', 'woodmart_products_per_page_action', 100 );
    
    	function woodmart_products_per_page_action() {
    		if ( isset( $_REQUEST['per_page'] ) ) :
    			if( ! class_exists('WC_Session_Handler')) return;
    			$s = WC()->session; // WC()->session
    			if ( is_null( $s ) ) return;
    			
    			$s->set( 'shop_per_page', intval( $_REQUEST['per_page'] ) );
    		endif;
    	}
    }
    
    // **********************************************************************//
    // ! Get Items per page number on the shop page
    // **********************************************************************//
    
    if( ! function_exists( 'woodmart_get_products_per_page' ) ) {
    	function woodmart_get_products_per_page() {
    		if( ! class_exists('WC_Session_Handler') ) return;
    		$s = WC()->session; // WC()->session
    		if ( is_null( $s ) ) return intval( woodmart_get_opt('shop_per_page') );
    		
    		if ( isset( $_REQUEST['per_page'] ) && ! empty( $_REQUEST['per_page'] ) ) :
    			return intval( $_REQUEST['per_page'] );
    		elseif ( $s->__isset( 'shop_per_page' ) ) :
    			$val = $s->__get( 'shop_per_page' );
    			if( ! empty( $val ) )
    				return intval( $s->__get( 'shop_per_page' ) );
    		endif;
    		return intval( woodmart_get_opt('shop_per_page') );
    	}
    }
    
    // **********************************************************************//
    // ! Items view select on the shop page
    // **********************************************************************//
    
    if( ! function_exists( 'woodmart_shop_view_action' ) ) {
    
    	add_action( 'woodmart_before_shop_page', 'woodmart_shop_view_action', 100 );
    
    	function woodmart_shop_view_action() {
    		if( ! class_exists('WC_Session_Handler')) return;
    		$s = WC()->session; // WC()->session
    		if ( is_null( $s ) ) return;
    
    		if ( isset( $_REQUEST['shop_view'] ) ) {
    			$s->set( 'shop_view', $_REQUEST['shop_view'] );
    		}
    		if ( isset( $_REQUEST['per_row'] ) ) {
    			$s->set( 'shop_per_row', $_REQUEST['per_row'] );
    		}
    	}
    }
    // **********************************************************************//
    // ! Get Items per ROW number on the shop page
    // **********************************************************************//
    
    if( ! function_exists( 'woodmart_get_products_columns_per_row' ) ) {
    	function woodmart_get_products_columns_per_row() {
    		if( ! class_exists('WC_Session_Handler') ) return;
    		$s = WC()->session; // WC()->session
    		if ( is_null( $s ) ) return intval( woodmart_get_opt('products_columns') );
    
    		if ( isset( $_REQUEST['per_row'] ) ) {
    			return intval( $_REQUEST['per_row'] );
    		}elseif ( $s->__isset( 'shop_per_row' ) ) {
    			return intval( $s->__get( 'shop_per_row' ) );
    		}else {
    			return intval( woodmart_get_opt('products_columns') );
    		}
    	}
    }
    
    if( ! function_exists( 'woodmart_get_shop_view' ) ) {
    	function woodmart_get_shop_view() {
    		if( ! class_exists('WC_Session_Handler') ) return;
    		$s = WC()->session; // WC()->session
    		if ( is_null( $s ) ) return woodmart_get_opt('shop_view');
    
    		if ( isset( $_REQUEST['shop_view'] ) ) {
    			return $_REQUEST['shop_view'];
    		}elseif ( $s->__isset( 'shop_view' ) ) {
    			return $s->__get( 'shop_view' );
    		}else {
    			$shop_view = woodmart_get_opt('shop_view');
    			if ( $shop_view == 'grid_list' ) {
    				return 'grid';
    			}elseif( $shop_view == 'list_grid'){
    				return 'list';
    			}else{
    				return $shop_view;
    			}
    		}
    	}
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Remove () from numbers in categories widget
     * ------------------------------------------------------------------------------------------------
     */
    
    if( ! function_exists( 'woodmart_filter_product_categories_widget_args' ) ) {
    	function woodmart_filter_product_categories_widget_args( $list_args ) {
    
    		$list_args['walker'] = new WOODMART_WC_Product_Cat_List_Walker();
    
    		return $list_args;
    	}
    
    	add_filter( 'woocommerce_product_categories_widget_args', 'woodmart_filter_product_categories_widget_args', 10, 1);
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * AJAX add to cart for all product types
     * ------------------------------------------------------------------------------------------------
     */
    
    if( ! function_exists( 'woodmart_ajax_add_to_cart' ) ) {
    	function woodmart_ajax_add_to_cart() {
    		// Get messages
    		ob_start();
    
    		wc_print_notices();
    
    		$notices = ob_get_clean();
    
    		// Get mini cart
    		ob_start();
    
    		woocommerce_mini_cart();
    
    		$mini_cart = ob_get_clean();
    
    		// Fragments and mini cart are returned
    		$data = array(
    			'notices' => $notices,
    			'fragments' => apply_filters( 'woocommerce_add_to_cart_fragments', array(
    					'div.widget_shopping_cart_content' => '<div class="widget_shopping_cart_content">' . $mini_cart . '</div>'
    				)
    			),
    			'cart_hash' => apply_filters( 'woocommerce_add_to_cart_hash', WC()->cart->get_cart_for_session() ? md5( json_encode( WC()->cart->get_cart_for_session() ) ) : '', WC()->cart->get_cart_for_session() )
    		);
    
    		wp_send_json( $data );
    
    		die();
    	}
    }
    
    add_action( 'wp_ajax_woodmart_ajax_add_to_cart', 'woodmart_ajax_add_to_cart' );
    add_action( 'wp_ajax_nopriv_woodmart_ajax_add_to_cart', 'woodmart_ajax_add_to_cart' );
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Function to prepare classes for grid element (column)
     * ------------------------------------------------------------------------------------------------
     */
    
    if ( ! function_exists( 'woodmart_get_grid_el_class' ) ) {
    	function woodmart_get_grid_el_class( $loop = 0, $columns = 4, $different_sizes = false, $xs_size = false, $sm_size = 4, $lg_size = 3, $md_size = false ) {
    		$classes = '';
    
    		$items_wide = woodmart_get_wide_items_array( $different_sizes );
    
    		if ( ! $xs_size ) {
    			$xs_size = apply_filters( 'woodmart_grid_xs_default', 6 );
    		}
    
    		if ( $columns > 0 ) {
    			$lg_size = 12 / $columns;
    		}
    
    		if ( ! $md_size ) {
    			$md_size = $lg_size;
    		}
    
    		if ( $columns > 4 ) {
    			$md_size = 3;
    		}
    
    		if ( $columns <= 3 ) {
    			if ( $columns == 1 ) {
    				$sm_size = 12;
    				$xs_size = 12;
    			} else {
    				$sm_size = 6;
    			}
    		}
    
    		// Change the layout alternating columns
    		if ( $different_sizes && ( in_array( $loop, $items_wide ) )) {
    		    
    		    switch ($columns):
    		        
                    case 3:
                        $lg_size = 6;
    			        $md_size = 6;
                    break;
                    
                    case 4:
                        $lg_size = 4;
    			        $md_size = 4;
                    break;
                    
                    case 5:
                        $lg_size = 3;
    			        $md_size = 3;
                    break;
                    
                    case 6:
                        $lg_size = '20_0';
    			        $md_size = 3;
                    break;
                
                endswitch;
    	
    		}
    		
            /*
            Because you made a custom work for showing 5 columns layout i rewrote the code so that
            when the Products grid with different sizes is disabled the columns work as normal
            but when is enabled to make the 5-4-5 layout work
            */
            
    		if ( ! $different_sizes && ( in_array( $columns, array( 5, 7, 8, 9, 10, 11 ) ) )) {
                $lg_size = str_replace( '.', '_', round( 100 / $columns, 1 ) );
                if ( ! strpos( $lg_size, '_' ) ) {
                    $lg_size = $lg_size . '_0';
                }
            }
            if ( ! in_array( $loop, $items_wide ) &&  ( in_array( $columns, array( 5, 7, 8, 9, 10, 11 ) ) ) ) {
                $lg_size = str_replace( '.', '_', round( 100 / $columns, 1 ) );
                if ( ! strpos( $lg_size, '_' ) ) {
                    $lg_size = $lg_size . '_0';
                }
            }
            
    		$sizes = array(
    			array(
    				'name' => 'col-lg',
    				'value' => $lg_size,
    			),
    			array(
    				'name' => 'col-md',
    				'value' => $md_size,
    			),
    			array(
    				'name' => 'col-sm',
    				'value' => $sm_size,
    			),
    			array(
    				'name' => 'col',
    				'value' => $xs_size,
    			),
    		);
    		
    		$result_sizes = array();
    		foreach ( $sizes as $index => $value ) {
    			if ( isset( $sizes[$index + 1] ) ) {
    				$next = $sizes[$index + 1];
    			} else {
    				continue;
    			}
    			
    			if ( $value['value'] === $next['value'] ) {
    				$result_sizes[$next['name']] = $next['value'];
    				unset($result_sizes[$value['name']]);
    			} else if ( $value['value'] !== $next['value'] ) {
    				$result_sizes[$value['name']] = $value['value'];
    				$result_sizes[$next['name']] = $next['value'];
    			}
    		}
    		
    		if ( apply_filters( 'woodmart_old_product_grid_classes', false ) ) {
    			$result_sizes = array(
    				'col-lg' => $lg_size,
    				'col-md' => $md_size,
    				'col-sm' => $sm_size,
    				'col' => $xs_size,
    			);
    		}
    
    		foreach ( $result_sizes as $size => $value ) {
    			$classes .= ' ' . $size . '-' . $value;
    		}
    		
    		if ( $loop > 0 && $columns > 0 ) {
    			if ( 0 == ( $loop - 1 ) % $columns || 1 == $columns ) {
    				$classes .= ' first ';
    			}
    			if ( 0 == $loop % $columns ) {
    				$classes .= ' last ';
    			}
    		}
    
    		return $classes;
    	}
    }
    
    if ( ! function_exists( 'woodmart_get_wide_items_array' ) ) {
    	function woodmart_get_wide_items_array( $different_sizes = false ){
    	    
    	    //To create an array big enough so that the alternate pattern repeats and not stops after few products
    	    $loop_cycle = 999;
    	    
    	    //Get the selected columns
    	    $perrow = apply_filters( 'loop_shop_columns', woodmart_get_products_columns_per_row() );
    	    
    /**
    
    You default function defined an array of ( 5, 6, 7, 8, 13, 14 )
    basically what it does was to change the product size in products
    that were inside this array, after the 14 product the repeated pattern stoped.
    
    Below i create a function that does the following thing.
    If you choose a 3 column layout it puts in array the numbers 4, 5 then skips 6, 7, 8 
    and puts 9, 10 and so on.
    
    These numbers in array are the positions of the products that have to change the size so that the final result looks like
    
    3, 3, 3
    
    2, 2 => products position 4, 5
    
    3, 3, 3
    
    2, 2 => products position 9, 10
    
    and so on
    
    Another example is
    
    4, 4, 4, 4
    
    3, 3, 3 => products position 5, 6, 7
    
    4, 4, 4, 4
    
    3, 3, 3 => products position 12, 13, 14
    
    This function works according to what collumn you have selected.
    
    So if you select a grid layout with 3 columns the pattern will be
    
    3/2
    
    For 4 columns the pattern will be
    
    4/3
    
    for 5
    
    5/4
    
    for 6
    
    6/5
    
    **/
            
            //My custom function Starts
    	    $stop = ($perrow+($perrow-1))*$loop_cycle;
    		$cycle = $perrow+($perrow-1);
    		
    		$arr = array();
    		
    		
    		for ($i=1; $i<=$stop; $i++) {
    			if ($i>($cycle-($perrow-1)) && $i<=$cycle) {
    				array_push($arr, $i);
    				if ($i==$cycle) $cycle += $perrow+($perrow-1);
    			} else continue;
    		}
    		
    		return $arr;
    		//My custom function Ends
    		
    		
    		
    		//Instead of array( 5, 6, 7, 8, 13, 14 ) i put the $arr array that generated above
    		$items_wide = apply_filters( 'woodmart_wide_items', array( $arr ) );
    
    		if( is_array( $different_sizes ) ) {
    			$items_wide = apply_filters( 'woodmart_wide_items', $different_sizes );
    		}
    
    		return $items_wide;
    	}
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Woodmart Related product count
     * ------------------------------------------------------------------------------------------------
     */
    if( ! function_exists( 'woodmart_related_count' ) ) {
    	add_filter( 'woocommerce_output_related_products_args', 'woodmart_related_count' );
    	  function woodmart_related_count() {
    		$args['posts_per_page'] = ( woodmart_get_opt( 'related_product_count' ) ) ? woodmart_get_opt( 'related_product_count' ) : 8;
    		return $args;
    	}
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Reset loop
     * ------------------------------------------------------------------------------------------------
     */
    
    if( ! function_exists( 'woodmart_reset_loop' ) ) {
    	function woodmart_reset_loop() {
    		unset( $GLOBALS['woodmart_loop'] );
    		woodmart_setup_loop();
    	}
    	add_action( 'woocommerce_after_shop_loop', 'woodmart_reset_loop', 1000 );
    	add_action( 'loop_end', 'woodmart_reset_loop', 1000 );
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Get loop prop
     * ------------------------------------------------------------------------------------------------
     */
    
    if( ! function_exists( 'woodmart_loop_prop' ) ) {
    	function woodmart_loop_prop( $prop, $default = '' ) {
    		woodmart_setup_loop();
    		
    		return isset( $GLOBALS['woodmart_loop'], $GLOBALS['woodmart_loop'][ $prop ] ) ? $GLOBALS['woodmart_loop'][ $prop ] : $default;
    	}
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Set loop prop
     * ------------------------------------------------------------------------------------------------
     */
    
    if( ! function_exists( 'woodmart_set_loop_prop' ) ) {
    	function woodmart_set_loop_prop( $prop, $value = '' ) {
    		if ( ! isset( $GLOBALS['woodmart_loop'] ) ) woodmart_setup_loop();
    
    		$GLOBALS['woodmart_loop'][ $prop ] = $value;
    	}
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Setup loop
     * ------------------------------------------------------------------------------------------------
     */
     
    if( ! function_exists( 'woodmart_setup_loop' ) ) {
    	function woodmart_setup_loop( $args = array() ) {
    		if ( isset( $GLOBALS['woodmart_loop'] ) ) return; // If the loop has already been setup, bail.
    		
    		$default_args = array(
    			'products_different_sizes' 	=> woodmart_get_opt( 'products_different_sizes' ),
    			'product_categories_design' => woodmart_get_opt( 'categories_design' ),
    			'product_categories_shadow' => woodmart_get_opt( 'categories_with_shadow' ),
    			'products_columns' 		    => ( woodmart_get_opt( 'per_row_columns_selector' ) ) ? apply_filters( 'loop_shop_columns', woodmart_get_products_columns_per_row() ) : woodmart_get_opt( 'products_columns' ),
    			'product_categories_style'  => false,
    			'product_hover' 			=> woodmart_get_opt( 'products_hover' ),
    			'products_view' 			=> woodmart_get_shop_view(),
    			'products_masonry' 			=> woodmart_get_opt( 'products_masonry' ),
    			
    			'timer' 					=> woodmart_get_opt( 'shop_countdown' ),
    			'progress_bar'              => woodmart_get_opt( 'grid_stock_progress_bar' ),
    			'swatches'					=> false,
    			
    			'is_slider' 				=> false,
    			'is_shortcode' 				=> false,
    			'is_quick_view' 			=> false,
    			
    			'woocommerce_loop' 			=> 0,
    			'woodmart_loop' 			=> 0,
    			
    			'parts_media' 				=> true,
    			'parts_title' 				=> true,
    			'parts_meta' 				=> true,
    			'parts_text' 				=> true,
    			'parts_btn' 				=> true,
    			
    			'blog_design' 				=> woodmart_get_opt( 'blog_design' ),
    			'blog_type' 				=> false,
    			'blog_columns' 				=> woodmart_get_opt( 'blog_columns' ),
    			'img_size' 					=> false,
    			'double_size' 				=> false,
    
    			'portfolio_style'			=> woodmart_get_opt( 'portoflio_style' ),
    			'portfolio_column'			=> woodmart_get_opt( 'projects_columns' ),
    		);
    		
    		$GLOBALS['woodmart_loop'] = wp_parse_args( $args, $default_args );
    	}
    	add_action( 'woocommerce_before_shop_loop', 'woodmart_setup_loop', 10 );
    	add_action( 'wp', 'woodmart_setup_loop', 50 );
    	add_action( 'loop_start', 'woodmart_setup_loop', 10 );
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Hide woocommerce notice
     * ------------------------------------------------------------------------------------------------
     */
    if ( ! function_exists( 'woodmart_hide_outdated_templates_notice' ) ) {
    	function woodmart_hide_outdated_templates_notice( $value, $notice ) {
    		if ( $notice == 'template_files' ) {
    			return false;
    		}
    
    		return $value;
    	}
    
    	add_filter( 'woocommerce_show_admin_notice', 'woodmart_hide_outdated_templates_notice', 2, 10 );
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Fix for single product image sizes
     * ------------------------------------------------------------------------------------------------
     */
    if ( ! function_exists( 'woodmart_single_product_image_sizes') ) {
    	function woodmart_single_product_image_sizes() {
    		$sizes = wc_get_image_size( 'woocommerce_single' );
    		if ( ! $sizes['height'] ) {
    			$sizes['height'] = $sizes['width'];
    		}
    
    		return array( $sizes['width'], $sizes['height'] );
    	}
    
    	add_filter( 'woocommerce_gallery_thumbnail_size', 'woodmart_single_product_image_sizes' );
    }
    
    /**
     * ------------------------------------------------------------------------------------------------
     * Change single product notice position
     * ------------------------------------------------------------------------------------------------
     */
    remove_action( 'woocommerce_before_single_product', 'woocommerce_output_all_notices', 10 );
    remove_action( 'woocommerce_before_shop_loop', 'woocommerce_output_all_notices', 10 );
    
    add_action( 'woodmart_before_single_product_summary_wrap', 'woocommerce_output_all_notices', 10 );
    add_action( 'woodmart_before_shop_page', 'woocommerce_output_all_notices', 10 );
    

    In reply to: Single product Page

    #160810

    Hello,

    If you want to add description and additional info in your product then edit your product and add your’s description in WP-Bakery block.

    Screenshot for clarification: https://jmp.sh/FjMC2R3

    In general the additional information tab only shown when you add attributes to the products. If you want to add the Additional information tab you have to add all those attributes from the product as in the screenshot: https://jmp.sh/2pFIr97

    Result: https://jmp.sh/AMlSqki

    To add SKU/category/share after the product tabs. Then go to theme settings >> Product Page >> SHOW / HIDE ELEMENTS >> Show product meta. You need to choose “After Tabs” option.

    In order to display “You may also like..” you need to enter a product editing mode and add products into Upsells of Linked product tabs as shown: http://prntscr.com/j5tv88
    You will find more information here: https://docs.woocommerce.com/document/related-products-up-sells-and-cross-sells/

    To display the related products section you need to enable the “Show related products” option from Theme Settings >> Product Page >> SHOW / HIDE ELEMENTS.

    Then you have to select a category from the product edit page as in the screenshot: https://jmp.sh/yqABzGC

    For example, if you have three products and all of them are of the same category then in the related products section of all those three products the other remaining 2 products will be shown.

    No, there is no such option to show you may also like section in the right sidebar.

    Best Regards.

    #160807

    Hi Since our website has been revised by you guys, we have lost a lot of features.
    Eg. DESCRIPTION
    ADDITIONAL INFORMATION
    REVIEWS (0)
    SHIPPING & DELIVERY
    They do not sure about the products on the page.
    The search feature does not work either.
    Can you look into this ASAP.
    Also the mobile menu does not work on mobile devices.

    #160099

    Hello,

    When you set showing an attribute on the product page, WooCommerce generates an additional information tab and shows the attribute.

    In general the additional information tab only shown when you add attributes to the products. If you want to add the Additional information tab you have to add all those attributes from the product as in the screenshot: https://jmp.sh/2pFIr97

    Result: https://jmp.sh/AMlSqki

    Best Regards.

Viewing 30 results - 61 through 90 (of 135 total)