Woo-commerce Snippets & Hacks
Introduction
Here are some WooCommerce snippets and hacks I've used on most of my sites So, I'd like to share them with everyone. You can either paste them into your theme's functions.php file or better still, use the Code Snippets plugin if you want to keep your changes when switching themes.
Change default WordPress Text
function divi_engine_wc_translations($translated){
$text = array(
'Your order' => 'Order', // changes all Your order text to be Order
'Billing Details' => 'Your Details', // changes all Billing Details text to be Your Details
'Product' => 'Book', // changes all product text to be book
'Addresses' => 'Billing Information', // changes all Addresses text to be Billing Information (in account)
);
$translated = str_ireplace( array_keys($text), $text, $translated );
return $translated;
}
add_filter( 'gettext', 'divi_engine_wc_translations', 20 );
Rename a product tab
add_filter( 'woocommerce_product_tabs', 'woo_rename_tab', 98);
function woo_rename_tab($tabs) {
$tabs['description']['title'] = 'More info';
return $tabs;
}
Replace “Out of stock” by “sold”
add_filter('woocommerce_get_availability', 'availability_filter_func');
function availability_filter_func($availability)
{
$availability['availability'] = str_ireplace('Out of stock', 'Sold', $availability['availability']);
return $availability;
}
Loading WooCommerce CSS and JavaScript Files on Shop Pages Only
<?php
if (!function_exists( 'evolution_manage_woocommerce_styles' ) ) :
/**
* Optimize WooCommerce Scripts
* Removes WooCommerce styles and scripts from non WooCommerce pages.
*/
function evolution_manage_woocommerce_styles() {
//first check that woo exists to prevent fatal errors
if ( function_exists( 'is_woocommerce' ) ) {
//dequeue scripts and styles
if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() && ! is_account_page() ) {
wp_dequeue_style( 'woocommerce-layout' );
wp_dequeue_style( 'woocommerce-smallscreen' );
wp_dequeue_style( 'woocommerce-general' );
wp_dequeue_style( 'evolution-woostyles' );
wp_dequeue_script( 'wc_price_slider' );
wp_dequeue_script( 'wc-single-product' );
wp_dequeue_script( 'wc-add-to-cart' );
wp_dequeue_script( 'wc-cart-fragments' );
wp_dequeue_script( 'wc-checkout' );
wp_dequeue_script( 'wc-add-to-cart-variation' );
wp_dequeue_script( 'wc-single-product' );
wp_dequeue_script( 'wc-cart' );
wp_dequeue_script( 'wc-chosen' );
wp_dequeue_script( 'woocommerce' );
wp_dequeue_script( 'prettyPhoto' );
wp_dequeue_script( 'prettyPhoto-init' );
wp_dequeue_script( 'jquery-blockui' );
wp_dequeue_script( 'jquery-placeholder' );
wp_dequeue_script( 'fancybox' );
wp_dequeue_script( 'jqueryui' );
}
}
}
add_action( 'wp_enqueue_scripts', 'evolution_manage_woocommerce_styles', 99 );
endif;
Quickly translate any string
add_filter('gettext', 'translate_text');
add_filter('ngettext', 'translate_text');
function translate_text($translated) {
$translated = str_ireplace('Choose and option', 'Select', $translated);
return $translated;
}
Set the Minimum Quantity for WooCommerce Products
/**
* Code snippet: Set the Minimum, Maximum, and Start Value to Cart Quantity
*/
add_filter( 'woocommerce_quantity_input_args', 'njengah_woocommerce_quantity_changes', 10, 2 );
function njengah_woocommerce_quantity_changes( $args, $product ) {
if ( ! is_cart() ) {
$args['input_value'] = 5; // Start from this value (default = 1)
$args['max_value'] = 1000; // Max quantity (default = -1)
$args['min_value'] = 1; // Min quantity (default = 0)
$args['step'] = 1; // Increment/decrement by this value (default = 1)
} else {
// Cart's "min_value" is already 0 and we don't need "input_value"
$args['max_value'] = 1000; // Max quantity (default = -1)
$args['step'] = 1; // Increment/decrement by this value (default = 0)
// COMMENT OUT FOLLOWING IF STEP < MIN_VALUE
// $args['min_value'] = 4; // Min quantity (default = 0)
}
return $args;
}
Redirect to checkout page after add to cart
function add_to_cart_checkout_redirect() {
wp_safe_redirect( get_permalink( get_option( 'woocommerce_checkout_page_id' ) ) );
die();
}
add_action( ‘add_to_cart_redirect’, ‘add_to_cart_checkout_redirect’, 16 );
function add_to_cart_checkout_redirect() {
global $woocommerce;
$checkout_url = $woocommerce->cart->get_checkout_url();
return $checkout_url;
}
Change add to cart button text
//Single Page
add_filter( 'woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text' ); // 2.1 +
function woo_custom_cart_button_text() {
return __( 'My Button Text', 'woocommerce' );
}
//On Archive Pages
add_filter( 'woocommerce_product_add_to_cart_text', 'woo_archive_custom_cart_button_text' ); // 2.1 +
function woo_archive_custom_cart_button_text() {
return __( 'My Button Text', 'woocommerce' );
}
Redirect add to cart button to checkout page
add_filter ('add_to_cart_redirect', 'redirect_to_checkout');
function redirect_to_checkout() {
global $woocommerce;
$checkout_url = $woocommerce->cart->get_checkout_url();
return $checkout_url;
}
Add email recipient when order completed
function woo_extra_email_recipient($recipient, $object) {
$recipient = $recipient . ', your@email.com';
return $recipient;
}
add_filter( 'woocommerce_email_recipient_customer_completed_order', 'woo_extra_email_recipient', 10, 2);