Fizetési mód elrejtése a választott szállítási módtól függően előnézeti képe

Fizetési mód elrejtése a választott szállítási módtól függően

| Olvasási idő: 1 perc

Ha felmerült már igényként, hogy bizonyos szállítási módtól függően elrejts fizetési módokat (például ingyenes szállítás esetén ne legyen utánvétes fizetés), jó helyen jársz. 

Nem is szaporítom tovább a szót: a megszokott módon hozzunk létre az mu-plugins mappában egy fájlt, az alábbi tartalommal (mondjuk disable-cod-for-free-shipping.php néven): 

php
<?php
/*
Plugin Name: Disable payment for free shipping
Plugin URI: https://www.webmenedzser.hu/snippet/fizetesi-mod-elrejtese-a-valasztott-szallitasi-modtol-fuggoen
Description: Disable payment for free shipping
Version: 1.0
Author: Ottó Radics, based on the work of Rodolfo Melogli and Jeroen Sormani
License: GPLv3
*/

function disable_payment_gateways_for_free_shipping( $available_gateways ) {
    $chosen_shipping_rates = WC()->session->get( 'chosen_shipping_methods' );
    $chosen_shipping_rates = $chosen_shipping_rates[0];

    if ( isset($available_gateways['cod']) && strpos($chosen_shipping_rates, 'free_shipping') === 0 ) {
        unset($available_gateways['cod']);
    }

    return $available_gateways;
}
add_filter( 'woocommerce_available_payment_gateways', 'disable_payment_gateways_for_free_shipping' );

A fenti kódról röviden: lekérjük a választott fizetési módot, ez egy egyelemű tömb lesz, így annak első elemét vesszük. Ha az átvételkor történő fizetés (cod) engedélyezve van, és a free_shipping szó a $chosen_shipping_rates változó 0. karakterénél kezdődik, akkor kivesszük az utánvétet az elérhető fizetési módok közül. 

Ezt a snippetet is felhasználtuk az Utánvét Ellenőr elkészítése során, melynek segítségével felhasználó szinten szűrni tudod az utánvétes rendelés elérhetőségét, a legjobb benne pedig az, hogy bejelentkezve sem kell lennie a vásárlónak.

Kérdésed, téma vagy javítási javaslatod van? Írd meg!