我想要的是什么:在将产品添加到购物车之前,用户必须通过选中复选框来确认他们已阅读产品的“备忘单”。 (备忘单只是另一个链接上的pdf图。)
我一直在研究以下代码,但我无法让它正常工作。当未选中复选框时,它会弹出通知,但当页面重新加载时,“添加到购物车”按钮仍然处于禁用状态,因此用户必须重置其变体选项。即使这样,通知也会重新开始。
我不确定我可能缺少什么。任何帮助将不胜感激。
我的代码:
// 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($passed, $product_id, $qty) {
$is_checked = isset($_POST['cheatsheetconfirm']) && $_POST['cheatsheetconfirm'] == 'on';
if ($is_checked == false) {
wc_add_notice( __( 'Please acknowledge that you have read the cheat sheet.', 'woocommerce' ), 'error' );
$passed = false;
}
return $passed;
}
add_filter( 'woocommerce_add_to_cart_validation', 'cheatsheetConfirmation', 10, 3 );