Heim  >  Fragen und Antworten  >  Hauptteil

Der umgeschriebene Titel der Fehleraufforderung zur benutzerdefinierten Kontrollkästchen-Verifizierung in der Woocommerce-Registrierung lautet: Lösen Sie das Problem der Fehleraufforderung zur benutzerdefinierten Kontrollkästchen-Verifizierung in der Woocommerce-Registrierung

<p>In WooCommerce habe ich mit dem folgenden Code ein benutzerdefiniertes Kontrollkästchen „Datenschutz“ zum Kundenregistrierungsformular hinzugefügt: </p> <pre class="brush:php;toolbar:false;">//Kontrollkästchen zum Registrierungsformular hinzufügen add_action( 'woocommerce_register_form', 'add_privacy_checkbox_registration' ); Funktion add_privacy_checkbox_registration() { $checkbox_text = sprintf( '%s <a href="%s"><strong>%s</strong></a>', __( 'Я прочитал и согласен с' ), esc_url( site_url('/politic-conf/') ), __( 'politische Vertraulichkeit' ) ); ?> <div class="woocommerce-privacy-policy-wrapper"> <p class="form-row validate-required"> <label class="woocommerce-form__label woocommerce-form__label-for-checkbox Kontrollkästchen"> "input type="checkbox" class="woocommerce-form__input-checkbox" name="privacy_policy" -policy" <span class="woocommerce-policy-checkbox-text"<?php echo $checkbox_text ?></span> <abbr class="required" ?php esc_attr_e( 'erforderlich', 'woocommerce' );>">*</abbr> </label> <input type="hidden" name="policy-field" </p> </div> <?php } // verifizieren add_filter( 'woocommerce_registration_errors', 'privacy_checkbox_registration_validation', 10, 3 ); Funktion Privacy_checkbox_registration_validation( $errors ) { if( is_checkout() ) { $errors zurückgeben; } if ( empty( $_POST[ 'privacy_policy' ] ) ) { $errors->add( 'privacy_policy_reg_error', 'Sie müssen unbedingt die Datenschutzrichtlinie anwenden.' ); } $errors zurückgeben; } </pre> <p>Der Code ist gültig. Kontrollkästchen hinzugefügt. Die Checkbox-Logik funktioniert auch. Das bedeutet, dass eine Benutzerregistrierung nicht möglich ist, wenn Sie das Kontrollkästchen nicht aktivieren. </p> <p>Aber es gibt ein Problem. Wenn das Kontrollkästchen nicht angeklickt ist, erscheint der Fehlertext nicht auf dem Bildschirm...</p> <p>Dies ist die betreffende Seite meiner Website – Problemseite</p> <p>Irgendwelche Ideen? </p>
P粉318928159P粉318928159435 Tage vor526

Antworte allen(2)Ich werde antworten

  • P粉464088437

    P粉4640884372023-09-04 11:32:09

    你尝试过没有这个吗?

    if( is_checkout() ) {
        return $errors;
    }

    由于过滤器是一个注册过滤器,所以似乎那段代码是不必要的,因为它不会在结账时被调用。尝试注释掉那个代码块,然后再次测试注册。如果它能工作,那么也要测试一下结账流程,确保它没有出错。

    return $errors;会结束函数,错误不会被添加。当然,我会假设is_checkout()会在注册时返回false,但也许在注册时它会因某种原因返回true?

    总之,只是一个尝试。

    Antwort
    0
  • P粉231112437

    P粉2311124372023-09-04 10:04:20

    我已经在测试网站上测试了你的代码,对我来说它运行正常,当复选框未被选中时会显示错误提示...

    现在在最后一个函数中有一些缺失的东西,你在add_filter()部分声明了3个参数,所以还缺少2个。同时我还简化了你的代码

    这里只是最后一个函数的修改后代码:

    // 验证
    add_filter( 'woocommerce_registration_errors', 'privacy_checkbox_registration_validation', 999, 3 );
    function privacy_checkbox_registration_validation( $errors, $username, $email ) {
        // 不在结账页面
        if( ! is_checkout() && empty( $_POST[ 'privacy_policy' ] ) ) {
            $errors->add( 'privacy_policy_error', 'Вам нужно принять политику конфиденциальности.' );
        }
        return $errors;
    }
    

    现在我不确定这是否能解决你的问题,因为在你的网站上提交后页面会重新加载,所以错误消息没有时间显示。

    Antwort
    0
  • StornierenAntwort