Last active
July 21, 2023 13:06
-
-
Save fuyuko/35db010ae3890dc4f963 to your computer and use it in GitHub Desktop.
Cheatsheet - WooCommerce Customization in functions.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Add a stylesheet after default style.css | |
wp_enqueue_style( 'my-css', get_template_directory_uri() . 'my-css.css', array('themename-style')); | |
//WooCommerce - Sort products by SKU | |
add_filter('woocommerce_get_catalog_ordering_args', 'custom_woocommerce_catalog_orderby'); | |
function custom_woocommerce_catalog_orderby( $args ) { | |
$args['meta_key'] = '_sku'; | |
$args['orderby'] = 'meta_value'; | |
$args['order'] = 'asc'; | |
return $args; | |
} | |
//WooCommerce - Remove Variation Price from Single Product Page | |
add_filter('woocommerce_variable_price_html','custom_from',10); | |
add_filter('woocommerce_grouped_price_html','custom_from',10); | |
add_filter('woocommerce_variable_sale_price_html','custom_from',10); | |
function custom_from($price){ | |
return false; | |
} | |
// WooCommerce - add SKU in category page before price | |
add_action( 'woocommerce_after_shop_loop_item_title', 'prima_custom_shop_item', 1); | |
function prima_custom_shop_item() { | |
global $post, $product; | |
/* product sku */ | |
echo '<p>SKU: '.$product->get_sku().'</p>'; | |
} | |
//show empty product categories | |
add_filter( 'woocommerce_product_subcategories_hide_empty', 'show_empty_categories', 10, 1 ); | |
function show_empty_categories ( $show_empty ) { | |
$show_empty = true; | |
// You can add other logic here too | |
return $show_empty; | |
} | |
//Hide subcategory count in woocommerce | |
add_filter( 'woocommerce_subcategory_count_html', 'custom_hide_category_count' ); | |
function custom_hide_category_count() { | |
// No count | |
} | |
//Remove Related Products | |
remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20); | |
//Remove Product Sort Dropdown on Category Page | |
remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 ); | |
//Remove Result Count on Category Page | |
remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 ); | |
//Disable Search Results Redirect to Product Page | |
add_filter( 'woocommerce_redirect_single_search_result', '__return_false' ); | |
//force display empty subcategories in category pages | |
add_filter( 'woocommerce_product_subcategories_hide_empty', 'so_28060317', 10, 1 ); | |
function so_28060317 ( $show_empty ) { | |
$show_empty = true; | |
return $show_empty; | |
} | |
// Change number or products per row to 3 | |
add_filter('loop_shop_columns', 'loop_columns'); | |
if (!function_exists('loop_columns')) { | |
function loop_columns() { | |
return 3; // 3 products per row | |
} | |
} | |
// Display 24 products per page. Goes in functions.php | |
add_filter( 'loop_shop_per_page', create_function( '$cols', 'return 24;' ), 20 ); | |
//display category image on category page | |
add_action( 'woocommerce_archive_description', 'woocommerce_category_image', 2 ); | |
function woocommerce_category_image() { | |
if ( is_product_category() ){ | |
global $wp_query; | |
$cat = $wp_query->get_queried_object(); | |
$thumbnail_id = get_woocommerce_term_meta( $cat->term_id, 'thumbnail_id', true ); | |
$image = wp_get_attachment_url( $thumbnail_id ); | |
if ( $image ) { | |
echo '<img class="cat-thumbnail" src="' . $image . '" alt="" />'; | |
} | |
} | |
} | |
//remove related products from single product page | |
remove_action ( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20); | |
//remove price from single product page | |
remove_action ( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10); | |
// hide product price on category page | |
function woo_product_listing_remove_price(){ | |
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10); | |
} | |
add_action( 'init', 'woo_product_listing_remove_price' ); | |
remove_action( 'woocommerce_before_subcategory_title', 'woocommerce_subcategory_thumbnail', 10); | |
add_action( 'woocommerce_before_subcategory_title', 'woocommerce_subcategory_thumbnail', 10); | |
// WooCommerce Loop Subcategory Thumbs - Add Image Wrapper | |
if ( ! function_exists( 'woocommerce_subcategory_thumbnail' ) ) { | |
function woocommerce_subcategory_thumbnail( $category ) { | |
$small_thumbnail_size = apply_filters( 'single_product_small_thumbnail_size', 'shop_catalog' ); | |
$dimensions = wc_get_image_size( $small_thumbnail_size ); | |
$thumbnail_id = get_woocommerce_term_meta( $category->term_id, 'thumbnail_id', true ); | |
if ( $thumbnail_id ) { | |
$image = wp_get_attachment_image_src( $thumbnail_id, $small_thumbnail_size ); | |
$image = $image[0]; | |
} else { | |
$image = wc_placeholder_img_src(); | |
} | |
if ( $image ) { | |
// Prevent esc_url from breaking spaces in urls for image embeds | |
// Ref: http://core.trac.wordpress.org/ticket/23605 | |
$image = str_replace( ' ', '%20', $image ); | |
echo '<div class="imagewrapper"><img src="' . esc_url( $image ) . '" alt="' . esc_attr( $category->name ) . '" width="' . esc_attr( $dimensions['width'] ) . '" height="' . esc_attr( $dimensions['height'] ) . '" /></div>'; | |
} | |
} | |
} | |
remove_action( 'woocommerce_before_subcategory_title', 'woocommerce_subcategory_thumbnail', 10); | |
add_action( 'woocommerce_before_subcategory_title', 'woocommerce_subcategory_thumbnail', 10); | |
//Minimum Order Dollar Amount for a specific product (this example: Curtain Wall must be $100 or more) | |
add_action( 'woocommerce_check_cart_items', 'spyr_set_min_total' ); | |
function spyr_set_min_total() { | |
// Only run in the Cart or Checkout pages | |
if( is_cart() || is_checkout() ) { | |
global $woocommerce; | |
// Set minimum Curtain Wall total | |
$minimum_cart_total = 100; | |
// Total we are going to be using for the Math | |
// This is before taxes and shipping charges | |
$total = 0; | |
//foreach products in the cart () | |
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { | |
$_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key ); | |
//curtain wall product id == 3288 | |
$product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key ); | |
if (strcmp($cart_item['product_id'], "3288") == 0 ) { | |
$subtotal = $_product->get_price() * (float)$cart_item['quantity']; | |
$total = $total + $subtotal; | |
} | |
} | |
// Will display a message along the lines of | |
// A Minimum of 100 USD is required before checking out. (Cont. below) | |
// Current cart total: 6 USD | |
if( $total <= $minimum_cart_total ) { | |
// Display our error message | |
wc_add_notice( sprintf( '<strong>A Minimum subtotal of $%s %s is required for Curtain Walls before checking out.</strong>' | |
.'<br />Current cart\'s total: $%s %s', | |
$minimum_cart_total, | |
get_option( 'woocommerce_currency'), | |
$total, | |
get_option( 'woocommerce_currency') ), | |
'error' ); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi @tbahsan
Can you tell me how you added a list of product categories and custom taxonomy in a widget area? If you using your own code, it would help me if you can share the code snippet. If you are using a plugin, let me know which plugin you are using. (including name of the plugin and URL of the plugin).
In addition, can you tell me WordPress version and WooCommerce version you are using?
Thanks!