【问题标题】:How to move the create account checkbox on Woocommerce checkout page如何在 Woocommerce 结帐页面上移动创建帐户复选框
【发布时间】:2021-02-08 02:54:43
【问题描述】:

在我当前的结帐页面上,电子邮件字段后面有“创建帐户”复选框。我正在尝试做的是将创建帐户复选框移到内联和电子邮件字段旁边。所以我会将电子邮件字段放在左侧,将创建的帐户复选框放在右侧。

我可以移动创建帐户复选框,但我无法弄清楚如何实现我描述的外观。任何帮助,将不胜感激。谢谢!

结帐页面在这里: https://www.dailymutt.com/checkout/

【问题讨论】:

    标签: php jquery wordpress woocommerce checkout


    【解决方案1】:

    这可以通过向计费表单添加一个新的类似复选框字段并使用 CSS 隐藏真正的复选框来完成。然后在jQuery的帮助下,你可以从重复的那个中触发隐藏的复选框。

    代码如下:

    // CSS rules
    add_action( 'woocommerce_before_checkout_billing_form', 'move_checkout_create_an_account_css' );
    function move_checkout_create_an_account_css() {
        if( ! is_user_logged_in() ) :
        ?><style>
            .woocommerce-account-fields label.woocommerce-form__label-for-checkbox {display: none !important;}
            #account_cb_field {margin-top: 32px;}
            #account_cb_field input {margin-right: 6px;}
        </style>
        <?php
        endif;
    }
    
    // Add a checkbox to billing section
    add_filter( 'woocommerce_checkout_fields', 'move_checkout_create_an_account_checkbox' );
    function move_checkout_create_an_account_checkbox( $fields ) {
        if( ! is_user_logged_in() ) {
            // Make email field on half on left side
            $fields['billing']['billing_email']['class'] = array('form-row-first');
    
            // Custom checkbox on half right side
            $fields['billing']['account_cb'] = array(
                'type'  => 'checkbox',
                'label' => __("Create an account?", "woocommerce"),
                'class' => array('form-row-last'),
            );
        }
        return $fields;
    }
    
    // remove "(optional)" from the new checkbox
    add_filter( 'woocommerce_form_field' , 'remove_checkout_optional_fields_label', 10, 4 );
    function remove_checkout_optional_fields_label( $field, $key, $args, $value ) {
        // Only on checkout page
        if ( is_checkout() && ! is_wc_endpoint_url() && $key === 'account_cb' ) {
            $optional = '&nbsp;<span class="optional">(' . esc_html__( 'optional', 'woocommerce' ) . ')</span>';
            $field = str_replace( $optional, '', $field );
        }
        return $field;
    }
    
    // The jQuery code
    add_action( 'wp_footer', 'move_checkout_create_an_account_js' );
    function move_checkout_create_an_account_js() {
        if ( ! is_user_logged_in() && is_checkout() && ! is_wc_endpoint_url() ) :
        ?><script>
        (function($){
            $('input[name=account_cb]').on( 'click', function() {
                $('input[name=createaccount]').trigger('click');
            });
        })(jQuery);
        </script>
        <?php
        endif;
    }
    

    代码进入活动子主题(或活动主题)的functions.php 文件中。经过测试并且可以工作。

    【讨论】:

    • TheAztec - 非常感谢!这很完美!你摇滚!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 2018-07-20
    • 2018-05-07
    • 2015-01-17
    • 2017-08-19
    • 2015-11-29
    • 2021-08-23
    相关资源
    最近更新 更多