• Hello there, i found this snipet here on forum from Sean. What snipet does its hiding shipment methods depending on category of product.

    What i want to know is it possible to make the same depending on product class. I wanted to make it myself, basically i know how to do it on this example but i dont know what is name of string that should be passed that represents woocommerce product class. So if someone knows it would be great to edit this snippet.

    So basically if only one item from cart has product class “breakable” it should lets say hide shipment method 1 and only leave lets say flat rate shipment.

    Thanks alot.

    /*
     * A simple filter to disable a user-specified payment gateway when a product with a user-specified category is added to the shopping cart
     *  - Note:  If multiple products are added and only one has a matching category, it will remove the payment gateway
     * Requires:
     *    payment_NAME : One of the five hardcoded Woocommerce standard types of payment gateways - paypal, cod, bacs, cheque or mijireh_checkout
     *    category_ID :   The ID of the category for which the gateway above will be removed.  Get the ID by clicking on the category under Products -> Categories and reading the "tag_ID" in the address bar
     *                             i.e. https://ubuntu.humble.lan/wp-admin/edit-tags.php?action=edit&taxonomy=product_cat&tag_ID=20&post_type=product <-- the tag_ID is 20
     * Coded by sean _ at _ techonfoot.com
     * Thanks to boxoft - https://stackoverflow.com/questions/15303031/woocommerce-get-category-for-product-page
     * Usual free code disclaimer - use at your own risk
     * This code was tested against Woocommerce 2.0.8 and WordPress 3.5.1
     */
    function filter_gateways($gateways){
    
    $payment_NAME = 'paypal'; // <--------------- change this
    $category_ID = '20';  // <----------- and this
    
     global $woocommerce;
    
     foreach ($woocommerce->cart->cart_contents as $key => $values ) {
    	// Get the terms, i.e. category list using the ID of the product
    	$terms = get_the_terms( $values['product_id'], 'product_cat' );
    	// Because a product can have multiple categories, we need to iterate through the list of the products category for a match
    	foreach ($terms as $term) {
    		// 20 is the ID of the category for which we want to remove the payment gateway
    		if($term->term_id == $category_ID){
                   unset($gateways[$payment_NAME]);
                       // If you want to remove another payment gateway, add it here i.e. unset($gateways['cod']);
    					break;
              }
    	    break;
    	}
    
       }
    	return $gateways;
    
    }
    
    add_filter('woocommerce_available_payment_gateways','filter_gateways');
  • The topic ‘Woocommerce filter shipping methofs’ is closed to new replies.