Jak skrýt platební metodu pro určitou kategorii ve Woocommerce

Jak skrýt platební metodu pro určitou kategorii ve Woocommerce

26 ledna, 2021 Vyp Od bigpluscz

Jak skrýt platební metodu pro určitou kategorii ve Woocommerce

 

Pokud používáte WordPress a na něm máte nainstalovanou woocommerce a potřebujete skrýt některé platební metody pro určitou kategorii, tak pro vás máme řešení. Jedná se o to, že pokud nabízíte například klasické zboží i to v elektronické podobě a chcete skrýt platební metodu na dobírku či platbu v hotovosti pro elektronické produkty, tak je třeba upravit soubor functions.php

Nejdříve je třeba zjistit jakou má kategorie ID!

Příklad :  http://localhost/Woocommercedemo/wp-admin/term.php?taxonomy=product_cat&tag_ID=19&post_type=product&wp_http_referer=%2FWoocommercedemo%2Fwp-admin%2Fedit-tags.php%3Ftaxonomy%3Dproduct_cat%26post_type%3Dproduct

Toto je řádek, který vidíte v liště prohlížeče, když máte otevřený produkt. Následně je třeba najít ID kategorie, která v našem případě je 19

Následně upravíme kategorie, které jsou předdefinované – paypal, cod, bacs, cheque or mijireh_checkout.

Posledním krokem je přidat kód do functions.php, který zkopírujete a nahrajete ho na spodní část výpisu. V řádku ( $available_gateways[‚cod‘]  zadejte, které platební metody chcete skrýt.

Zde je kód, který je třeba vložit:

 

Image by Dok Sev from Pixabay

 

 

add_filter( 'woocommerce_available_payment_gateways', 'wp_unset_gateway_by_category' );
 
function wp_unset_gateway_by_category( $available_gateways ) {
global $woocommerce;
$unset = false;
$category_ids = array( 19, 37 ); // The ID of the category for which the gateway  will be removed.  Get the ID by clicking on the category under Products -> Categories and reading the "tag_ID" in the address bar.
foreach ( $woocommerce->cart->cart_contents as $key => $values ) {
    $terms = get_the_terms( $values['product_id'], 'product_cat' );    
    foreach ( $terms as $term ) {        
        if ( in_array( $term->term_id, $category_ids ) ) {
            $unset = true;
            break;
        }
    }
}
    if ( $unset == true ) unset( $available_gateways['cod'] ); // One of the five hardcoded Woocommerce standard types of payment gateways - paypal, cod, bacs, cheque or mijireh_checkout
    return $available_gateways;
}