Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

In woocommerce registration form, there's no "terms and conditions" before sign up button.

Is there a way to make it appears in the form?

Here is the link of my theme layout.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
628 views
Welcome To Ask or Share your Answers For Others

1 Answer

Updated on july 2018 - Added compatibility for Woocommerce version 3.4+

If not done yet, first you need enable terms and conditions on checkout page:

  1. To create a new page in Wordpress for your terms and conditions
  2. To enable that page in Woocommerce > Settings > Checkout > Checkout pages (section):
    enter image description here
  3. Then save… you are done.

The code to get the term and conditions check box on registration form:

// Add term and conditions check box on registration form
add_action( 'woocommerce_register_form', 'add_terms_and_conditions_to_registration', 20 );
function add_terms_and_conditions_to_registration() {

    if ( wc_get_page_id( 'terms' ) > 0 && is_account_page() ) {
        ?>
        <p class="form-row terms wc-terms-and-conditions">
            <label class="woocommerce-form__label woocommerce-form__label-for-checkbox checkbox">
                <input type="checkbox" class="woocommerce-form__input woocommerce-form__input-checkbox input-checkbox" name="terms" <?php checked( apply_filters( 'woocommerce_terms_is_checked_default', isset( $_POST['terms'] ) ), true ); ?> id="terms" /> <span><?php printf( __( 'I&rsquo;ve read and accept the <a href="%s" target="_blank" class="woocommerce-terms-and-conditions-link">terms &amp; conditions</a>', 'woocommerce' ), esc_url( wc_get_page_permalink( 'terms' ) ) ); ?></span> <span class="required">*</span>
            </label>
            <input type="hidden" name="terms-field" value="1" />
        </p>
    <?php
    }
}

// Validate required term and conditions check box
add_action( 'woocommerce_register_post', 'terms_and_conditions_validation', 20, 3 );
function terms_and_conditions_validation( $username, $email, $validation_errors ) {
    if ( ! isset( $_POST['terms'] ) )
        $validation_errors->add( 'terms_error', __( 'Terms and condition are not checked!', 'woocommerce' ) );

    return $validation_errors;
}

Code goes in function.php file of your active child theme (or active theme). Tested and works.

enter image description here

When checkbox is not ticked, an error message is displayed.

enter image description here

This checkbox is only a validation step (It is not saved in database, as we don't use that information anywhere).


Addition:

To allow terms and conditions only in Registration page use one of the following:

add_filter( 'woocommerce_checkout_show_terms', '__return_false' );

Or

add_filter( 'woocommerce_get_terms_and_conditions_checkbox_text', '__return_false' );

Code goes in function.php file of your active child theme (or active theme). Tested on WC 3.5+ and works.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...