你嘗試過沒有這個(gè)嗎?
if( is_checkout() ) { return $errors; }
由于過濾器是一個(gè)注冊(cè)過濾器,所以似乎那段代碼是不必要的,因?yàn)樗粫?huì)在結(jié)賬時(shí)被調(diào)用。嘗試注釋掉那個(gè)代碼塊,然后再次測(cè)試注冊(cè)。如果它能工作,那么也要測(cè)試一下結(jié)賬流程,確保它沒有出錯(cuò)。
return $errors;
會(huì)結(jié)束函數(shù),錯(cuò)誤不會(huì)被添加。當(dāng)然,我會(huì)假設(shè)is_checkout()
會(huì)在注冊(cè)時(shí)返回false,但也許在注冊(cè)時(shí)它會(huì)因某種原因返回true?
總之,只是一個(gè)嘗試。
我已經(jīng)在測(cè)試網(wǎng)站上測(cè)試了你的代碼,對(duì)我來說它運(yùn)行正常,當(dāng)復(fù)選框未被選中時(shí)會(huì)顯示錯(cuò)誤提示...
現(xiàn)在在最后一個(gè)函數(shù)中有一些缺失的東西,你在add_filter()
部分聲明了3個(gè)參數(shù),所以還缺少2個(gè)。同時(shí)我還簡(jiǎn)化了你的代碼
這里只是最后一個(gè)函數(shù)的修改后代碼:
// 驗(yàn)證 add_filter( 'woocommerce_registration_errors', 'privacy_checkbox_registration_validation', 999, 3 ); function privacy_checkbox_registration_validation( $errors, $username, $email ) { // 不在結(jié)賬頁(yè)面 if( ! is_checkout() && empty( $_POST[ 'privacy_policy' ] ) ) { $errors->add( 'privacy_policy_error', 'Вам нужно принять политику конфиденциальности.' ); } return $errors; }
現(xiàn)在我不確定這是否能解決你的問題,因?yàn)樵谀愕木W(wǎng)站上提交后頁(yè)面會(huì)重新加載,所以錯(cuò)誤消息沒有時(shí)間顯示。