【问题标题】:Woocommerce Payment Gateway Based Checkout Fields基于 Woocommerce 支付网关的结帐字段
【发布时间】:2015-07-08 12:10:28
【问题描述】:

我希望根据选择的支付网关删除结帐字段。

我在 function.php 中添加了以下代码,但它不起作用。我面临的问题是,它处于 If 条件下,但 unset 在 if 条件下不起作用。当我尝试在 if 条件中回显时,它会显示在浏览器中。

add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {

    if($_POST['payment_method'] === "wcwcPDpg"){

       echo "this";
       unset($fields['billing']['billing_first_name']);
       unset($fields['billing']['billing_last_name']);
       unset($fields['billing']['billing_company']);
       unset($fields['billing']['billing_address_1']);
       unset($fields['billing']['billing_address_2']);
       unset($fields['billing']['billing_city']);
       unset($fields['billing']['billing_postcode']);
       unset($fields['billing']['billing_country']);
       unset($fields['billing']['billing_state']);
       unset($fields['billing']['billing_phone']);
       unset($fields['order']['order_comments']);
       unset($fields['billing']['billing_email']);
       unset($fields['account']['account_username']);
       unset($fields['account']['account_password']);
       unset($fields['account']['account_password-2']);
    }


   return $fields;
}

当我删除 if 条件时,这些字段未设置,但是,我只想为特定的支付网关取消设置。

任何帮助表示赞赏:)

【问题讨论】:

  • 您需要检查支付方式是否在管理员中开启。删除该条件并检查付款方式开/关条件。
  • 付款方式开/关有什么关系?如果选择了支付网关 X,我只想从结帐页面中删除结帐字段。但如果选择支付网关 Y,我想显示这些字段。

标签: php wordpress woocommerce


【解决方案1】:

试试

if (WC()->session->chosen_payment_method == "wcwcPDpg") {

而不是

if($_POST['payment_method'] === "wcwcPDpg"){

然后将其添加到您的子主题的 functions.php 中,以便在每次切换支付网关时应用您的过滤器:

function filter_woocommerce_update_order_review_fragments( $array ) { 
   ob_start();
   wc_get_template( 'checkout/form-billing.php', array( 'checkout' => WC()->checkout() ) );

   $array[".woocommerce-billing-fields"] = ob_get_clean();
   return $array; 
}; 

add_filter( 'woocommerce_update_order_review_fragments', 'filter_woocommerce_update_order_review_fragments', 10, 1 )

我怀疑有更好的方法来做到这一点,但这是我的第一次尝试。如果您有更好的解决方案,请在此处发布更新。

【讨论】:

    猜你喜欢
    • 2021-06-10
    • 2019-05-03
    • 2021-04-24
    • 1970-01-01
    • 2019-05-20
    • 2012-12-28
    • 1970-01-01
    • 2019-06-15
    相关资源
    最近更新 更多