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):

Fizetési mód elrejtése a választott szállítási módtól függően
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.
<?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!