woocommerce 添加过滤器以将 paypal 信用卡表单设置为默认付款方式

woocommerce add filter to set paypal credit card form as default payment method

我一直在尝试向我的 woocommerce 代码添加一个过滤器,以防止表单将客户电子邮件地址发送到 paypal。 (我使用的是贝宝标准)。据推测,这将导致信用卡表格成为默认显示,而不是 'sign in to paypal' 选项。

我在这里找到了这段代码: Paypal Payment Standard default enter card details 应该这样做,但我不确定将该代码放在哪里。这是我的 /templates/checkout/form-checkout.php,它不起作用:

<form name="checkout" method="post" class="checkout woocommerce-checkout" action="<?php echo esc_url( $get_checkout_url ); ?>" enctype="multipart/form-data">

 <?php if ( sizeof( $checkout->checkout_fields ) > 0 ) : ?>

  <?php do_action( 'woocommerce_checkout_before_customer_details' ); ?>

  <div class="col2-set" id="customer_details">
   <div class="col-1">
    <?php do_action( 'woocommerce_checkout_billing' ); ?>
   </div>

   <div class="col-2">
    <?php do_action( 'woocommerce_checkout_shipping' ); ?>
   </div>
  </div>

                <?php function smw_woo_paypal_args($args) {
                    $args['email'] = '';
                    return $args;
                } 
                add_filter( 'woocommerce_paypal_args', 'smw_woo_paypal_args', 99);
                ?>
  <?php do_action( 'woocommerce_checkout_after_customer_details' ); ?>

  <h3 id="order_review_heading"><?php _e( 'Your order', 'woocommerce' ); ?></h3>

 <?php endif; ?>

 <div id="order_review" class="woocommerce-checkout-review-order">
  <?php do_action( 'woocommerce_checkout_order_review' ); ?>
 </div>

</form>

关于放置此过滤器的位置有什么想法吗?

将该过滤器放入主题的 functions.php 文件中。这将使它正常工作,并且应该按预期将电子邮件留空。

也就是说,我认为这不会解决您的问题。 Payments Standard 结账页面通常基于 cookie,如果任何用户已在所使用的浏览器上登录帐户,它将假定任何 PayPal 结账将使用该帐户并将默认使用该帐户。

如果您要清理浏览器 cache/cookies,或者只是使用一个全新、干净的浏览器,您可能会发现来宾结帐选项更加突出。

不过,如果您要使用快速结帐 API,则可以更轻松地强制执行此操作。您正在使用 WooCommerce,因此结账 PayPal for WooCommerce,其中包括 Express Checkout,而且是免费的。有一些设置专门用于启用插件中内置的完整访客结帐/信用卡选项。