php – 强制客户选中复选框,确认他们已阅读文档

我有一个WooCommerce网站,有几个产品由于他们订购了错误的东西而获得了大量的回报.我添加一个“备忘单”,客户可以通过高级自定义字段引用该备忘单.我已经编写了下面的代码,强制他们选中复选框以确认他们已经阅读了它,然后才能将产品添加到购物车中.

问题是,无论是否勾选方框,我都会显示自定义错误消息.显然我的逻辑有一个缺陷,但我无法确定它.

任何帮助将不胜感激.

<?PHP
// Add Confirmation CheckBox on Product Single  
add_action( 'woocommerce_single_product_summary', 'woocommerce_cheat_sheet_confirm', 29 );  
    function woocommerce_cheat_sheet_confirm() {
        global $post;
        $cheat_sheet = get_field('cheat_sheet'); // Get Advanced Custom Field
        if ( ! empty( $cheat_sheet ) ) { // If it exists, add the confirmation Box ?>                   
            <div id="cheat-sheet-confirmation" class="checkBox">
                <form>  
                    <label>
                        <input id="cheatsheetconfirm" name="cheatsheetconfirm" type="checkBox" value="isconfirmed"> I confirm that I have read the <a href="<?PHP echo $cheat_sheet['url']; ?>" />cheat sheet</a>.
                    </label>
                </form>
            </div>
        <?PHP } 
    }

    function cheatsheetConfirmation() { 
    if(isset($_REQUEST['cheatsheetconfirm']) && $_REQUEST['cheatsheetconfirm'] == 'on'){
        $is_checked = true;   
    }
    else {
        $is_checked = false;
    }

    if ($is_checked == false) {
        wc_add_notice( __( 'Please ackNowledge that you have read the cheat sheet.', 'woocommerce' ), 'error' );
        return false;
    }

    return true;
}
add_action( 'woocommerce_add_to_cart_validation', 'cheatsheetConfirmation', 10, 3 );

解决方法:

错误在这里.

<input id="cheatsheetconfirm" name="cheatsheetconfirm" type="checkBox" value="isconfirmed"> I confirm that I have read the <a href="<?PHP echo $cheat_sheet['url']; ?>">cheat sheet</a>

把它改成这个

<input id="cheatsheetconfirm" name="cheatsheetconfirm" type="checkBox" value="on"> I confirm that I have read the <a href="<?PHP echo $cheat_sheet['url']; ?>">cheat sheet</a>

说明

我更改了< input>的值标签.

你说错了逻辑是正确的.您正在检查$_REQUEST [‘cheatsheetconfirm’]的值,该值设置为发布“isconfirmed”.这意味着你的if语句返回false,因为你希望$_REQUEST [‘cheatsheetconfirm’]等于“isconfirmed”而不是“on”.

如果更改通过表单提交的值,则if语句将返回true.

相关文章

我们有时候在定制WORDPRESS主题的时候,由于菜单样式的要求我...
很多朋友在做wordpree主题制作的时候会经常遇到一个问题,那...
wordpress后台的模块很多,但并不是每个都经常用到。介绍几段...
从WordPress4.2版本开始,如果我们在MYSQL5.1版本数据中导出...
很多网友会遇到这样一个问题,就是WordPress网站上传图片、附...
对于经常要在文章中出现代码的IT相关博客,安装一个代码高亮...