选择Woocommerce 3不需要付款方式

时间:2018-07-18 15:06:53

标签: php wordpress checkbox woocommerce checkout

Example

选择不需要付款方式。也就是说,在结帐页面上将“选择”更改为“复选框”。即使未选择付款方式,也可以下订单。

我怀疑这还不够,因为有可能,如果您不选择付款方式,则会导致错误或问题。

因此,我想添加无需选择付款方式即可创建订单的功能。并且,因此,系统应该理解,对于订单,必须分配一个状态,例如“保留”。

wp-content\plugins\woocommerce\templates\checkout\payment-method.php

<li class="wc_payment_method payment_method_<?php echo $gateway->id; ?>">
    <input id="payment_method_<?php echo $gateway->id; ?>" type="radio" class="input-radio" name="payment_method" value="<?php echo esc_attr( $gateway->id ); ?>" <?php checked( $gateway->chosen, true ); ?> data-order_button_text="<?php echo esc_attr( $gateway->order_button_text ); ?>" />

    <label for="payment_method_<?php echo $gateway->id; ?>">
        <?php echo $gateway->get_title(); ?> <?php echo $gateway->get_icon(); ?>
    </label>
    <?php if ( $gateway->has_fields() || $gateway->get_description() ) : ?>
        <div class="payment_box payment_method_<?php echo $gateway->id; ?>" <?php if ( ! $gateway->chosen ) : ?>style="display:none;"<?php endif; ?>>
            <?php $gateway->payment_fields(); ?>
        </div>
    <?php endif; ?>
</li>

我有一个主意:

创建自定义付款方式-“默认”。如图中所示,只有两种付款方式在网站上可见(没有第三种付款方式)。然后重新定义插件模板并添加支票(如果未选中此复选框)选择,则保留“默认”。

2 个答案:

答案 0 :(得分:3)

已更新:首先,您需要一个自定义付款网关:

  

您可以下载插件from HERE,进行安装并激活。

完成后,您将添加以下代码。它将隐藏此“自定义”付款方式,并默认在结帐页面上将其选中。

一些jQuery代码将允许在您现有的付款网关和此隐藏的“自定义”网关之间切换。

代码:

// set "custom" payment method as default on checkou and hide it
add_action( 'woocommerce_before_checkout_form', 'set_custom_payment_method_as_default_and_hide_it' );
function set_custom_payment_method_as_default_and_hide_it(){
    // Set "custom" payment method as default
    WC()->session->set('chosen_payment_method', 'custom');

    // Hide this "Custom" payment method
    ?>
    <style>
        ul.wc_payment_methods > li.payment_method_custom { display: none !important; }
    </style>
    <?php
}

// switch between your existing payment gateways and the "custom" one
add_action( 'wp_footer', 'auto_switch_payment_methods' );
function auto_switch_payment_methods(){
    // Only on checkout page
    if ( ! is_checkout() ) return;
    // jQuery code
    ?>
    <script type="text/javascript">
        jQuery(function($){
            var a = 'form.checkout', b = 'input[name="payment_method"]', c = 'input#payment_method_custom';
            $(a).on( 'click', b, function() {
                if( ! $(c).is(':checked') && $(this).hasClass('on') ) {
                        $(c).prop("checked", true);
                        $(this).removeClass('on');
                        $('div.payment_box').each( function(){
                            $(this).hide('fast');
                        });
                } else if( ! $(c).is(':checked') && ! $(this).hasClass('on') ) {
                    $(b).each( function(){
                        $(this).removeClass('on');
                    });
                    $(this).addClass('on')
                }
            });
        });
    </script>
    <?php
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试和工作。

答案 1 :(得分:0)

add_filter('woocommerce_cart_needs_payment','__return_false');

请在已激活主题的functions.php文件中添加“上方过滤器”。