Am o șmecherie la un client: renunță la un procesator de plăți în favoarea altuia. Șmecheria însă aici vine: are subscription activat și nu putem dezactiva procesatorul vechi (braintree) pentru că … vrem să păstrăm abonamentele curente (până găsim o modalitate eficientă de a migra).
În fine, braintree rămâne activ, dar îl vedem la checkout. Cum îl scoatem de acolo?
add_filter('woocommerce_payment_gateways', function ($gateways) {
// vrem să se întâmple asta doar la checkout
if (!is_checkout()) {
return $gateways;
}
foreach ($gateways as $key => $gateway) {
if (is_string($gateway) && class_exists($gateway)) {
// verificarea asta se face pentru că există două modalități
// de a înregistra un gateway:
// 1. ca instanță sau
// 2. ca FQN (numele clasei)
// Acoperim ambele variante așa.
$gateway = new $gateway();
}
if (false !== stristr($gateway->id, 'braintree')) {
unset($gateways[$key]);
}
}
return array_values(array_filter($gateways));
}, PHP_INT_MAX);
Cam atât.
Pai nu ar fi fost mai simplu doar sa ii dai display: none; din CSS?
@Kotoi: Ar fi fost o posibilitate, într-adevăr. Dar nu-mi place să las la îndemâna utilizatorului lucruri ce n-aș vrea să fie la îndemâna utilizatorului