-
AuthorSearch Results
-
In reply to: Shop Sidebar Colour Swatches – Chopped Off…
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,
StewartIn reply to: Filter by brand with logo
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.In reply to: Hoover block (Vat and Plus Shipping)
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
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
Topic: Some minor issues
in forum WoodMart support forumHi 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.In reply to: Information shipping on the product page
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
In reply to: Additional tab content and WCFM and HTML Blocks
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/uy89xfAfter 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/uy841jIn reply to: edit product tab
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
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.
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:
- The first tab is working OK (coorected CSS is not applied yet) – https://drive.google.com/file/d/1ok7vHlLjJeZmvXrTeUekcjbtQdX_gYN2/view?usp=sharing
- The second tab the HTML Block shortcode is rendered but shortcodes inside HTML Block were not: https://drive.google.com/file/d/1RHicBzRiqvbm-KgAA0hRde35q8cS3QT1/view?usp=sharing
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
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
ParticipantApril 13, 2020 at 9:43 am #186477Dear 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’sThis 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-CrafterzIn reply to: Additional information 2 columns
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
Topic: removing tabs from product pages
in forum WoodMart support forumWhat 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/Topic: Single Product Page
in forum WoodMart support forum1. How can I change “Related Products” text to “You May Also Like”?
https://prnt.sc/qrht262. I’m not planning to use long description or additional information. How can I remove the line shown in image.
https://prnt.sc/qrhuc03. Is it possible to show related products in a carousal?
https://prnt.sc/qrhuzr4. How can I move short description below add to cart button and add a 1px border around it?
https://prnt.sc/qrhvfsHello,
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
ParticipantJanuary 18, 2020 at 8:42 am #168653I 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
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
In reply to: Single Product page tabs and size guide
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
ParticipantDecember 11, 2019 at 9:46 pm #162826To 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 wrotePlease 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 " 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
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.
In reply to: Product Page Additional Information
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.
In reply to: Custom/duplicate upsells products
Hello,
For the additional tab you can use “Additional tab title” and “Additional tab content” options from Theme Settings >> Product Page >> TABS:
Screenshot for clarification: https://jmp.sh/EM0NPNB
For adding slider you can use the WoodMart slider or revolution slider using Wp-Bakery page builder inside the description tab or in the additional tab.
You can configure upsells products to show on some particular products. Read more information in the WooCommerce documentation https://docs.woocommerce.com/document/related-products-up-sells-and-cross-sells/
Best Regards.
Topic: remove additional information tab
in forum WoodMart support forummasood nikroo
ParticipantOctober 30, 2019 at 9:07 am #153391Hello,
i want to remove additional tab on all my products page.https://drive.google.com/file/d/12r01oNHHkTxNyhpg5LF0UNiTDt33P1sR/view?usp=drivesdk
how can i do it?
Regards.In reply to: Woocommerce Features
Hello again!
2) I did this originally but the green sale badge did not display on the product so I added the category to see if this worked. I have removed the category and the green sales badge is still not displaying on the product/s in the New for 2019 category.
3) I found a php snippet which has removed the additional information tab
function woo_remove_product_tabs( $tabs ) {
unset( $tabs[‘additional_information’] );
return $tabs;
}
add_filter( ‘woocommerce_product_tabs’, ‘woo_remove_product_tabs’, 98 );
add_filter(‘gettext’, ‘change_rp_text’, 10, 3);
add_filter(‘ngettext’, ‘change_rp_text’, 10, 3);5) This is a woocommerce thing and I was hoping you might have a resolution as it never works and I have selected categories. I have got around this problem now by renaming the title to ‘Other Products You Might Like’.
function change_rp_text($translated, $text, $domain)
{
if ($text === ‘Related products’ && $domain === ‘woocommerce’) {
$translated = esc_html__(‘Other Products You Might Like’, $domain);
}
return $translated;
}6) Where do I edit the page titles section I need to display? This is what I am trying to achieve https://prnt.sc/ppw9nb
Many thanks
In reply to: Woocommerce Features
Most Welcome,
2) I have seen you screenshot. You do not have to select a category from the categories or tag option. I described you to create an html block and then use the short code inside the specific category description from the Products >> Categories: https://jmp.sh/2EYgtpx
3) As you said that most of your products do not have variations. You can share the URL of specific product in which that tab exist so I can remove the “Additional Information” tab for you. Also share the login credentials of your site.
4) I’m glad that you resolved the issue by yourself. You are the best.
5) You can 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 these three products the other remaining 2 products will be shown.
6) We do not need to write CSS code to achieve this. You can simply display the title again by edit those pages title section.
Remember that if you switched off the title of shop page then the categories and subcategories also did not shown the title.
Best Regards.
In reply to: Woocommerce Features
Thank you for your replies.
2) I have followed the instructions but the green New badge icon is not appearing on the productimage.These are my settings https://prnt.sc/ppcbm5
3) Most of my products are simple and have no variations or attributes. This is what I am trying to hide https://prnt.sc/ppcgfx Just the default Woocommerce additional information tab.
4) I have found where the issue was. On each product the Tax Status field should be set to Taxable. On my products it was set to none. Took me a good while to find this!
5) Where do I select the same category? I would love to solve the related products so related products in the category are displayed
6) I have solved this by switching off the title on the ‘Shop’ page settings. I really love this feature so now the sub categories display on the categories title section except for the shop page
Many thanks
In reply to: Woocommerce Features
Hello,
1) To hide the breadcrumbs from the single product page. Kindly insert the below CSS code in Theme Settings >> Custom CSS >> Global Custom CSS:
.single-product .woocommerce-breadcrumb { display:none; }
2) The “New” label can only be used for products it can’t be displayed category wise. But you can use our theme’s “Products (carousel or grid)” element in html block and select the “Product with NEW label” option from the dropdown.
Then used that html shortcode in your product category description.
Screenshot for clarification: https://jmp.sh/cZyado9
So that specific category will only shown the new products.
3) When you set showing an attribute on the product page, Woocommerce generates an additional information tab and shows the attribute. Check and disable this in attributes added to products.
4) As you want to display “Inc VAT” at the end of price.
You need to put “Inc VAT” at WooCommerce >> Settings >> Tax >> Price display suffix.
Screenshot: https://jmp.sh/WLLLo0Z
After doing this must clear your site and browser cache.Best Regards.
In reply to: Common description for selected or all products.
Hello,
You can add description one by one to the products and you also used the same content.
But there is no such option to write some description in a block and then select products for that description. This is not possible currently.
You can try the “Additional tab” option from Theme Settings > Product page > Additional tab title/content https://prnt.sc/p4ovpn
But remember that it shows only when you set showing an attribute on the product page, WooCommerce generates and additional information tab and shows the attribute.
Best Regards.
In reply to: Strange Look on My Shop and Product Category Page
Hi,
In the latest update, product grid structure was optimized so the old custom code will be not working. Try to replace your child theme code from this post (https://xtemos.com/forums/topic/you-have-activated-your-purchase-code-more-than-3-times-you-are-allowed-to-do-t/#post-44948) with the following code:
<?php global $product; $action_classes = ''; $add_btn_classes = ''; if ( 'carousel' === woodmart_loop_prop('products_view') ) { $action_classes .= ' woodmart-buttons wd-pos-r-t'; $add_btn_classes .= ' wd-action-btn wd-add-cart-btn wd-style-icon'; } else { $action_classes .= ' wd-bottom-actions'; } do_action( 'woocommerce_before_shop_loop_item' ); ?> <div class="product-wrapper"> <div class="content-product-imagin"></div> <div class="product-element-top"> <a href="<?php echo esc_url( get_permalink() ); ?>" class="product-image-link"> <?php /** * woocommerce_before_shop_loop_item_title hook * * @hooked woocommerce_show_product_loop_sale_flash - 10 * @hooked woodmart_template_loop_product_thumbnail - 10 */ do_action( 'woocommerce_before_shop_loop_item_title' ); ?> </a> <?php woodmart_hover_image(); ?> <div class="wrapp-swatches"><?php echo woodmart_swatches_list();?><?php woodmart_add_to_compare_loop_btn(); ?></div> <?php woodmart_quick_shop_wrapper(); ?> </div> <div class="product-information"> <?php /** * woocommerce_shop_loop_item_title hook * * @hooked woocommerce_template_loop_product_title - 10 */ do_action( 'woocommerce_shop_loop_item_title' ); ?> <?php woodmart_product_categories(); woodmart_product_brands_links(); ?> <div class="product-rating-price"> <div class="wrapp-product-price"> <?php /** * woocommerce_after_shop_loop_item_title hook * * @hooked woocommerce_template_loop_rating - 5 * @hooked woocommerce_template_loop_price - 10 */ do_action( 'woocommerce_after_shop_loop_item_title' ); ?> </div> </div> <div class="fade-in-block"> <div class="hover-content woodmart-more-desc"> <div class="hover-content-inner woodmart-more-desc-inner"> <?php if ( woodmart_get_opt( 'base_hover_content' ) == 'excerpt' ) { echo do_shortcode( get_the_excerpt() ); }else if ( woodmart_get_opt( 'base_hover_content' ) == 'additional_info' ){ wc_display_product_attributes( $product ); } ?> </div> </div> <div class="woodmart-buttons-alt <?php echo esc_attr( $action_classes ); ?>"> <div class="wrap-wishlist-button"><?php do_action( 'woodmart_product_action_buttons' ); ?></div> <div class="woodmart-add-btn<?php echo esc_attr( $add_btn_classes ); ?>"><?php do_action( 'woocommerce_after_shop_loop_item' ); ?></div> <div class="wrap-quickview-button"><?php woodmart_quick_view_btn( get_the_ID() ); ?></div> </div> <?php if ( woodmart_loop_prop( 'progress_bar' ) ): ?> <?php woodmart_stock_progress_bar(); ?> <?php endif ?> <?php if ( woodmart_loop_prop( 'timer' ) ): ?> <?php woodmart_product_sale_countdown(); ?> <?php endif ?> </div> </div> </div>
After that try to replace custom CSS code from this post (https://xtemos.com/forums/topic/you-have-activated-your-purchase-code-more-than-3-times-you-are-allowed-to-do-t/page/2/#post-45048) with following custom CSS code:
body .product-grid-item .woodmart-buttons-alt { max-width: 300px; width: 100%; margin: 0 auto; flex-direction: column; align-items: stretch; } body .product-grid-item .fade-in-block .woodmart-buttons-alt div > a { color: white; border-radius: 0 !important; font-size: 12px; font-weight: bold; text-transform: uppercase; width: 100%; padding: 10px 14px; } body .product-grid-item .fade-in-block .woodmart-buttons-alt div > a.loading > span { display: none; } .product-grid-item .woodmart-buttons-alt div > a:hover, .product-grid-item .woodmart-buttons-alt div > a:focus { color: white; -webkit-box-shadow: inset 0 -2px 0 rgba(0,0,0,.15); box-shadow: inset 0 -2px 0 rgba(0,0,0,.15); } .product-grid-item .woodmart-buttons-alt #wcbpg_open_popup { padding: 10px 14px; text-decoration: none; } .product-grid-item .woodmart-buttons-alt div > a > span { -webkit-transform: none !important; transform: none !important; } .product-grid-item .woodmart-buttons-alt div > a:before { display: none !important; } .product-grid-item .wrap-wishlist-button i { display: none; } .product-grid-item .woodmart-buttons-alt .yith_ywraq_add_item_product_message { display: none !important; } .product-grid-item .wrap-wishlist-button, .product-grid-item .woodmart-add-btn > a, .product-grid-item .woodmart-add-btn > div { margin-bottom: 5px !important; } .product-grid-item .woodmart-buttons-alt div > a, .product-grid-item .woodmart-buttons-alt div > a { background-color: #83B735 !important; } .product-grid-item .woodmart-buttons-alt div > a:hover, .product-grid-item .woodmart-buttons-alt div > a:focus { background-color: #6ca300 !important; }
Regards
-
AuthorSearch Results
-
Search Results
-
Topic: Some minor issues
Topic: Single Product Page