2016-06-14 7 views
1

Ich mag eine Standardzahlungsmethode programmatisch auf (Radio aktiviert ist) in WooCommerce Kasse Seite basierend auf einem Zustand mit PHP (nicht JQuery).Wählen WooCommerce Zahlungsmethode bedingt in PHP

Lets sagen, dass ich zwei Zahlungsmethoden haben:

'pay_method1' and 'pay_method2' 

Die meisten Lösungen vorschlagen, ein Verfahren, um das Entfernen des anderen zu wählen:

unset($gateways['pay_method1']) //auto selects pay_method2 naturally 

Aber ich will nicht das Verfahren entfernen. Ich möchte nur einen Standard festlegen, wenn die Checkout-Seite geladen/neu geladen wird, damit der Benutzer bei Bedarf die Methoden wechseln kann.

ich mit der folgenden Aktion in functions.php plane:

add_action("woocommerce_before_checkout_form", "custom_before_checkout_action"); 
function custom_before_checkout_action() { 

if ($my_condition) { 
    //default to pay_method1 - how?? 
} 
else { 
    //default to pay_method2 - how?? 
} 

}

Ist das möglich WooCommerce zu sagen, welche Zahlungsmethode sollte auf diese Weise überprüft werden?

Antwort

1

können Sie WooCommerce Template-Struktur Kasse Ordner-Datei payment-method.php sehen haben. Es gibt Zahlungsmethode $ Gateway-Objekt haben Eigenschaft $ Gateway-> gewählt, um auf den tatsächlichen Standard-Check-Payment-Gateway zuzugreifen.

add_filter('woocommerce_available_payment_gateways', 'show_custom_payment_gateways'); 

    function show_custom_payment_gateways($available_gateways){ 

     global $woocommerce; 
     $available_gateways = $woocommerce->payment_gateways->get_available_payment_gateways(); 

     if($myconditon){ 
     $available_gateways['pay_method2']->chosen = true; 
     $available_gateways['pay_method1']->chosen = false // default to false unchecked. 
    } 

}

+0

Wie bereits erwähnt, ich will keine Gateways entfernen. – lilbiscuit

+1

Oh! Sie möchten das standardmäßig überprüfte Zahlungsportal bedingt einstellen. – user5200704

+0

bearbeiten neue Antwort bitte – user5200704

Verwandte Themen