Wie kann ich die Zahlungsmethode basierend auf dem Versandland im blockbasierten Checkout von WooCommerce bedingt ausblePhp

PHP-Programmierer chatten hier
Anonymous
 Wie kann ich die Zahlungsmethode basierend auf dem Versandland im blockbasierten Checkout von WooCommerce bedingt ausble

Post by Anonymous »

Ich verwende die neueste Version von WooCommerce mit dem blockbasierten Checkout (d. h. WooCommerce Blocks) und muss die Standardzahlungsmethode „Nachnahme“ (COD) ausblenden, es sei denn, das Versandland ist Deutsch (DE).
Im klassischen Checkout-Ablauf könnte dies leicht mit dem Filter „woocommerce_available_ payment_gateways“ erreicht werden:

Code: Select all

add_filter('woocommerce_available_payment_gateways', 'custom_restrict_cod_for_slovenia');
function custom_restrict_cod_for_slovenia($gateways) {
if (is_admin()) return $gateways;

if (isset($gateways['cod'])) {
$shipping_country = WC()->customer->get_shipping_country();
if ($shipping_country !== 'DE') {
unset($gateways['cod']);
}
}
return $gateways;
}
Dies funktioniert perfekt im klassischen Checkout, aber NICHT im blockbasierten Checkout – die Nachnahmemethode wird auch dann angezeigt, wenn das Versandland nicht Slowenien ist, und sie wird nicht dynamisch aktualisiert, wenn der Benutzer das Land ändert.
Ich habe auch versucht, mich wie folgt in woocommerce_store_api_paid_methods einzubinden:

Code: Select all

add_filter('woocommerce_store_api_payment_methods', 'custom_cod_for_si_only', 10, 2);
function custom_cod_for_si_only($gateways, $request) {
if (isset($gateways['cod'])) {
if (
isset($request['shipping_address']['country']) &&
$request['shipping_address']['country'] !== 'DE'
) {
unset($gateways['cod']);
}
}
return $gateways;
}
Aber selbst das funktioniert nicht wie erwartet. Die Nachnahme-Zahlungsmethode wird unabhängig vom ausgewählten Land weiterhin angezeigt und beim Wechseln des Landes an der Kasse nicht dynamisch ausgeblendet.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post