(jqueryではなく)phpを使用した条件に基づいて、woocommerceチェックアウトページでデフォルトの支払い方法(ラジオがチェックされている)をプログラムで設定したいと思います。
2つの支払い方法があるとしましょう:
'pay_method1' and 'pay_method2'
ほとんどのソリューションは、他のメソッドを選択するためにメソッドを削除することを提案しています。
unset($gateways['pay_method1']) //auto selects pay_method2 naturally
しかし、私はメソッドを削除したくありません。チェックアウトページがロード/リロードされるときにのみデフォルトを設定したいので、ユーザーは必要に応じてメソッドを切り替えることができます。
私は次のアクションを実行する予定ですfunctions.php
:
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??
}
}
この方法でどの支払い方法をチェックする必要があるかをwoocommerceに伝えることは可能ですか?
woocommerceテンプレート構造のチェックアウトフォルダーにファイルpayment-method.phpがあることがわかります。支払い方法があります$ gatewayオブジェクトにはプロパティ$ gateway->があり、真のデフォルトのチェック済み支払いゲートウェイにアクセスするために選択されています。
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.
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加