Ich möchte alle Zahlungs-Gateways unter besonderen Situation deaktivieren:
Ich habe 2 spezielle Produkte, die ich nicht bei der Kasse mit einem anderen Produkt kombiniert werden möchte.Deaktivieren Sie alle Zahlungen Gateway, wenn es bestimmte Produkte in den Warenkorb
Lassen Sie uns sagen, dass meine "special" Produkte IDs 496
und 484
sind. Alle anderen sind "normale" Produkte.
, wenn eine dieser „special“ Produkte in den Warenkorb gelegt ist, möchte ich „paypal“ beispielsweise deaktivieren.
, wenn ein Kunde in seinem Wagen hat, auf einmal, ein „special“ Produkt und ein „normales“ Produkt, mag ich alle Zahlungen Gateway deaktivieren, so kann er nicht die Kasse.
Dies ist mein Code:
//disable add to cart if
add_filter('woocommerce_available_payment_gateways', 'filter_gateways', 1);
function filter_gateways($gateways)
{
global $woocommerce;
foreach ($woocommerce->cart->cart_contents as $key => $values) {
// store product IDs in array
$nonPPproducts = array(496,484);
if (in_array($values['product_id'], $nonPPproducts)) {
unset($gateways['cod'], $gateways['bacs'], $gateways['cheque'], $gateways['stripe']);
} elseif (in_array($values['product_id'], $nonPPproducts) && in_array($values['product_id'])) {
unset($gateways['under-review'], $gateways['cod'], $gateways['bacs'], $gateways['cheque'], $gateways['stripe']);
}
}
return $gateways;
}
Aber ich kann if-Anweisung nur die erste funktioniert nicht herausfinden, warum ... Mit anderen Worten, was auch immer die Situation, alle Zahlungs-Gateways außer deaktiviert sind under-review
Zahlungs-Gateways.
Was mache ich falsch?
Wie kann ich das erreichen?
Dank
1) globale Variablen verwenden; 2) hart codierte Werte werden nicht empfohlen. Sie könnten auch 2 * wrapper * -Funktionen in der letzten 'if' für die' unset' mit einem aussagekräftigen Namen erstellen. –
nur neugierig, haben Sie in Betracht gezogen, nicht erlaubt es in den Warenkorb hinzugefügt werden oder warnen beim Versuch, es hinzuzufügen der Wagen? Die Idee ist, den Kunden so schnell wie möglich wissen zu lassen, dass er die Bestellung nicht in einem Einkaufswagen haben kann, anstatt Zeit damit zu verbringen, danach zu fragen, dass er es erneut tun muss. –
@RyanVincent, wäre sogar cool, wenn ich das tun könnte –