Get the Official WPSaviour App Now!

BlogTutorials

My 25 Best WooCommerce Snippets For WordPress

woocommerce snippets list

Events flies… It’s been 6 months since I started to work for WooThemes as a WooCommerce full time help technician. All through these 6 months I learnt fairly a bit on WooCommerce and I coded fairly a bit (be taught fairly a bit!) of WooCommerce related snippets. Actually, WooCommerce is totally extremely efficient software program and easily expandable. It has many hooks that may be utilized for virtually each little factor, and that’s what make WooCommerce so good. This is a guidelines of 25 Best WooCommerce Snippets For WordPress, I wrote or tailor-made in the midst of the earlier months; all these snippets need to be pasted inside the options.php file inside your theme folder:

1 – Add Price Type to WooCommerce Admin E mail

add_action( 'woocommerce_email_after_order_table', 'add_payment_method_to_admin_new_order', 15, 2 );
 
function add_payment_method_to_admin_new_order( $order, $is_admin_email ) {
  if ( $is_admin_email ) {
    echo '<p><sturdy>Price Approach:</sturdy> ' . $order->payment_method_title . '</p>';
  }
}

2 – Up-sells merchandise per internet web page / per line

remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15 );
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_upsells', 15 );
 
if ( ! function_exists( 'woocommerce_output_upsells' ) ) {
	function woocommerce_output_upsells() {
	    woocommerce_upsell_display( 3,3 ); // Present Three merchandise in rows of three
	}
}

3 – Take away product courses from retailer internet web page

add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

function custom_pre_get_posts_query( $q ) {
 
	if ( ! $q->is_main_query() ) return;
	if ( ! $q->is_post_type_archive() ) return;
	
	if ( ! is_admin() && is_shop() && ! is_user_logged_in() ) {
 
		$q->set( 'tax_query', array(array(
			'taxonomy' => 'product_cat',
			'self-discipline' => 'slug',
			'phrases' => array( 'color', 'style', 'spices', 'vanilla' ), // Don't present merchandise in these courses on the shop internet web page
			'operator' => 'NOT IN'
		)));
	
	}
 
	remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
 
}

4 – Quickly translate any string

add_filter('gettext',  'translate_text');
add_filter('ngettext',  'translate_text');
 
function translate_text($translated) {
     $translated = str_ireplace('Choose and chance',  'Select',  $translated);
     return $translated;
}

5 – Exclude a category from the WooCommerce class widget

add_filter( 'woocommerce_product_categories_widget_args', 'woo_product_cat_widget_args' );

function woo_product_cat_widget_args( $cat_args ) {
	
	$cat_args['exclude'] = array('16');
	
	return $cat_args;
}

6 – Add a personalized self-discipline to a product variation

//Present Fields
add_action( 'woocommerce_product_after_variable_attributes', 'variable_fields', 10, 2 );
//JS in order so as to add fields for model new variations
add_action( 'woocommerce_product_after_variable_attributes_js', 'variable_fields_js' );
//Save variation fields
add_action( 'woocommerce_process_product_meta_variable', 'variable_fields_process', 10, 1 );

function variable_fields( $loop, $variation_data ) { ?>	
	<tr>
		<td>
			<div>
					<label></label>
					<enter type="textual content material" dimension="5" title="my_custom_field[]" value=""/>
			</div>
		</td>
	</tr>

<tr>
		<td>
			<div>
					<label></label>
					
			</div>
		</td>
	</tr>
<?php }
 
function variable_fields_process( $post_id ) {
	if (isset( $_POST['variable_sku'] ) ) :
		$variable_sku = $_POST['variable_sku'];
		$variable_post_id = $_POST['variable_post_id'];
		$variable_custom_field = $_POST['my_custom_field'];
		for ( $i = 0; $i < sizeof( $variable_sku ); $i++ ) :
			$variation_id = (int) $variable_post_id[$i];
			if ( isset( $variable_custom_field[$i] ) ) {
				update_post_meta( $variation_id, '_my_custom_field', stripslashes( $variable_custom_field[$i] ) );
			}
		endfor;
	endif;
}

7 – Substitute “Out of stock” by “purchased”

add_filter('woocommerce_get_availability', 'availability_filter_func');

function availability_filter_func($availability)
{
	$availability['availability'] = str_ireplace('Out of stock', 'Purchased', $availability['availability']);
	return $availability;
}

8 – Present “product already in cart” as an alternative of “add to cart” button

/**
 * Change the add to cart textual content material on single product pages
 */
add_filter( 'woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text' );

function woo_custom_cart_button_text() {

	world $woocommerce;
	
	foreach($woocommerce->cart->get_cart() as $cart_item_key => $values ) {
		$_product = $values['data'];
	
		if( get_the_ID() == $_product->id ) {
			return __('Already in cart - Add As soon as extra?', 'woocommerce');
		}
	}
	
	return __('Add to cart', 'woocommerce');
}

/**
 * Change the add to cart textual content material on product archives
 */
add_filter( 'add_to_cart_text', 'woo_archive_custom_cart_button_text' );

function woo_archive_custom_cart_button_text() {

	world $woocommerce;
	
	foreach($woocommerce->cart->get_cart() as $cart_item_key => $values ) {
		$_product = $values['data'];
	
		if( get_the_ID() == $_product->id ) {
			return __('Already in cart', 'woocommerce');
		}
	}
	
	return __('Add to cart', 'woocommerce');
}

9 – Cowl merchandise rely in school view

add_filter( 'woocommerce_subcategory_count_html', 'woo_remove_category_products_count' );

function woo_remove_category_products_count() {
	return;
}

10 – Make account checkout fields required

add_filter( 'woocommerce_checkout_fields', 'woo_filter_account_checkout_fields' );
 
function woo_filter_account_checkout_fields( $fields ) {
	$fields['account']['account_username']['required'] = true;
	$fields['account']['account_password']['required'] = true;
	$fields['account']['account_password-2']['required'] = true;

	return $fields;
}

11 – Rename a product tab

add_filter( 'woocommerce_product_tabs', 'woo_rename_tab', 98);
function woo_rename_tab($tabs) {

 $tabs['description']['title'] = 'Further data';

 return $tabs;
}

12 – Itemizing WooCommerce product Lessons

$args = array(
    'amount'     => $amount,
    'orderby'    => $orderby,
    'order'      => $order,
    'hide_empty' => $hide_empty,
    'embody'    => $ids
);

$product_categories = get_terms( 'product_cat', $args );

$rely = rely($product_categories);
 if ( $rely > 0 ){
     echo "<ul>";
     foreach ( $product_categories as $product_category ) {
       echo '<li><a href="' . get_term_link( $product_category ) . '">' . $product_category->title . '</li>';
        
     }
     echo "</ul>";
 }

13 – Substitute retailer internet web page title

add_filter( 'woocommerce_page_title', 'woo_shop_page_title');

function woo_shop_page_title( $page_title ) {
	
	if( 'Retailer' == $page_title) {
		return "My new title";
	}
}

14 – Change a widget title

/*
 * Change widget title
 */
add_filter( 'widget_title', 'woo_widget_title', 10, 3);

function woo_widget_title( $title, $event, $id_base ) {
	
	if( 'onsale' == $id_base) {
		return "My new title";
	}
}

15 – Take away WooCommerce default settings

add_filter( 'woocommerce_catalog_settings', 'woo_remove_catalog_options' );

function woo_remove_catalog_options( $catalog ) {

	unset($catalog[23]); //Trim zeros (no) 
	unset($catalog[22]); //2 decimals 
	unset($catalog[21]); //decimal sep (.) 
	unset($catalog[20]); //thousand sep (,) 
	unset($catalog[19]); //overseas cash place (left)	
	unset($catalog[18]); //overseas cash place (left)	
	unset($catalog[5]); // ajax add to cart (no)	
	
	return $catalog; 
}

16 – Change “from” e-mail deal with

function woo_custom_wp_mail_from() {
        world $woocommerce;
        return html_entity_decode( '[email protected]' );
}
add_filter( 'wp_mail_from', 'woo_custom_wp_mail_from', 99 );

17 – Decode from title in WooCommerce e-mail

function woo_custom_wp_mail_from_name() {
        world $woocommerce;
        return html_entity_decode( get_option( 'woocommerce_email_from_name' ) );
}
add_filter( 'wp_mail_from_name', 'woo_custom_wp_mail_from_name', 99 );

function woo_custom_wp_mail_from() {
        world $woocommerce;
        return html_entity_decode( get_option( 'woocommerce_email_from' ) );
}
add_filter( 'wp_mail_from_name', 'woo_custom_wp_mail_from_name', 99 );

18 – Return featured merchandise ids

function woo_get_featured_product_ids() {
	// Load from cache
	$featured_product_ids = get_transient( 'wc_featured_products' );

	// Reputable cache found
	if ( false !== $featured_product_ids )
		return $featured_product_ids;

	$featured = get_posts( array(
		'post_type'      => array( 'product', 'product_variation' ),
		'posts_per_page' => -1,
		'post_status'    => 'publish',
		'meta_query'     => array(
			array(
				'key' 		=> '_visibility',
				'value' 	=> array('catalog', 'seen'),
				'consider' 	=> 'IN'
			),
			array(
				'key' 	=> '_featured',
				'value' => 'positive'
			)
		),
		'fields' => 'id=>mom or father'
	) );

	$product_ids = array_keys( $featured );
	$parent_ids  = array_values( $featured );
	$featured_product_ids = array_unique( array_merge( $product_ids, $parent_ids ) );

	set_transient( 'wc_featured_products', $featured_product_ids );

	return $featured_product_ids;
}

19 – Add personalized self-discipline to edit deal with internet web page

// add fields to edit deal with internet web page
function woo_add_edit_address_fields( $fields ) {

	$new_fields = array(
				'date_of_birth'     => array(
				'label'             => __( 'Date of starting', 'woocommerce' ),
				'required'          => false,
				'class'             => array( 'form-row' ),
			),
		);
		
	$fields = array_merge( $fields, $new_fields );
	
    return $fields;
	
}

add_filter( 'woocommerce_default_address_fields', 'woo_add_edit_address_fields' );

20 – Present onsale merchandise catalog shortcode

function woocommerce_sale_products( $atts ) {

    world $woocommerce_loop;

    extract(shortcode_atts(array(
        'per_page'  => '12',
        'columns'   => '4',
        'orderby' => 'date',
        'order' => 'desc'
    ), $atts));

    $woocommerce_loop['columns'] = $columns;

    $args = array(
        'post_type' => 'product',
        'post_status' => 'publish',
        'ignore_sticky_posts'   => 1,
        'posts_per_page' => $per_page,
        'orderby' => $orderby,
        'order' => $order,
        'meta_query' => array(
            array(
                'key' => '_visibility',
                'value' => array('catalog', 'seen'),
                'consider' => 'IN'
            ),
            array(
                'key' => '_sale_price',
                'value' =>  0,
                'consider'   => '>',
                'type'      => 'NUMERIC'
            )
        )
    );
    query_posts($args);
    ob_start();
    woocommerce_get_template_part( 'loop', 'retailer' );
    wp_reset_query();

    return ob_get_clean();
}

add_shortcode('sale_products', 'woocommerce_sale_products');

21 – Have onsale merchandise

function woo_have_onsale_products() {
	
	world $woocommerce;

	// Get merchandise on sale
	$product_ids_on_sale = array_filter( woocommerce_get_product_ids_on_sale() );

	if( !empty( $product_ids_on_sale ) ) {
		return true;
	} else {
		return false;
	}
	
}

// Occasion:
if( woo_have_onsale_products() ) {
	echo 'have onsale merchandise';
} else {
	echo 'no onsale product';
}

22 – Set minimal order amount

add_action( 'woocommerce_checkout_process', 'wc_minimum_order_amount' );
function wc_minimum_order_amount() {
	world $woocommerce;
	$minimal = 50;
	if ( $woocommerce->cart->get_cart_total(); < $minimal ) {
           $woocommerce->add_error( sprintf( 'You possibly can have an order with a minimal of %s to place your order.' , $minimal ) );
	}
}

23 – Order by worth, date or title on retailer internet web page

add_filter('woocommerce_default_catalog_orderby', 'custom_default_catalog_orderby');
 
function custom_default_catalog_orderby() {
     return 'date'; // Might also use title and worth
}

24 – Redirect add to cart button to checkout internet web page

add_filter ('add_to_cart_redirect', 'redirect_to_checkout');

function redirect_to_checkout() {
    world $woocommerce;
    $checkout_url = $woocommerce->cart->get_checkout_url();
    return $checkout_url;
}

25 – Add e-mail recipient when order achieved

function woo_extra_email_recipient($recipient, $object) {
    $recipient = $recipient . ', [email protected]';
    return $recipient;
}
add_filter( 'woocommerce_email_recipient_customer_completed_order', 'woo_extra_email_recipient', 1

Download The WPSaviour App Now

Related posts
Beginner’s GuideBlogShowcase

7 Best Shopify Alternatives in 2020 (Cheaper and More Powerful)

Beginner’s GuideBest WordPress PluginsBlog

14 Best AI Chatbots Software for Your Website (Comparison)

Beginner’s GuideBlogTips

Magento vs WooCommerce – Which one is Better? (Comparison)

Beginner’s GuideBlogTips

12 Best Calculator Plugins for Your WordPress Site

Sign up for our Newsletter and
stay informed

Fear Of Missing Out?

Sign up with your email address to receive WordPress tips and updates
SUBSCRIBE NOW
Terms and Conditions apply
close-link
Click Me