本教程詳細(xì)介紹了如何在wordpress網(wǎng)站上實(shí)現(xiàn)一個(gè)僅在首次訪問時(shí)顯示的年齡驗(yàn)證彈窗。通過利用javascript的cookie功能,文章提供了設(shè)置和獲取cookie的實(shí)用函數(shù),并指導(dǎo)如何將其集成到jquery代碼中,以控制彈窗的顯示邏輯和關(guān)閉行為,確保用戶體驗(yàn)和合規(guī)性。
在某些特定類型的WordPress網(wǎng)站上,例如銷售酒精、煙草或成人內(nèi)容,強(qiáng)制性的年齡驗(yàn)證彈窗是合規(guī)性的重要組成部分。理想的年齡驗(yàn)證彈窗應(yīng)具備以下特性:
直接使用localStorage或簡(jiǎn)單的jQuery腳本可能無(wú)法在WordPress環(huán)境中完美實(shí)現(xiàn)這些要求,尤其是在跨會(huì)話(session)或跨頁(yè)面訪問時(shí)保持狀態(tài)。本文將介紹一種基于JavaScript Cookie的穩(wěn)健解決方案。
為了實(shí)現(xiàn)“僅在首次訪問顯示”的功能,我們需要一種機(jī)制來在用戶的瀏覽器中持久化地存儲(chǔ)一個(gè)狀態(tài)。Cookie是實(shí)現(xiàn)這一目標(biāo)的理想選擇,因?yàn)樗梢栽谟脩舻臑g覽器中設(shè)置一個(gè)帶有過期時(shí)間的鍵值對(duì),并在后續(xù)請(qǐng)求中被網(wǎng)站讀取。
首先,我們需要兩個(gè)核心的JavaScript函數(shù)來設(shè)置和獲取Cookie:
/** * 設(shè)置一個(gè)Cookie * @param {string} cname - Cookie的名稱 * @param {string} cvalue - Cookie的值 * @param {number} exdays - Cookie的過期天數(shù) */ function setCookie(cname, cvalue, exdays) { const d = new Date(); d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); const expires = "expires=" + d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; } /** * 獲取指定名稱的Cookie值 * @param {string} cname - Cookie的名稱 * @returns {string} Cookie的值,如果不存在則返回空字符串 */ function getCookie(cname) { const name = cname + "="; const ca = document.cookie.split(';'); for(let i = 0; i < ca.length; i++) { let c = ca[i]; while (c.charAt(0) === ' ') { c = c.substring(1); } if (c.indexOf(name) === 0) { return c.substring(name.length, c.length); } } return ""; }
這些函數(shù)應(yīng)該被放置在您的WordPress主題的JavaScript文件中,或者直接嵌入到header.php或footer.php的<script>標(biāo)簽內(nèi)。
有了Cookie操作函數(shù)后,我們可以編寫jQuery代碼來控制彈窗的顯示和隱藏。
假設(shè)您的年齡驗(yàn)證彈窗HTML結(jié)構(gòu)如下,通常放置在header.php或footer.php中,以便在所有頁(yè)面加載時(shí)可用:
<div id="snippet-ageTest-alertbox" style="display: none;"> <div id="age-test" class="main_background"> <div class="age-test-square main_background clearfix"> <div class="title"> <span> Pokra?ovaním potvrzuji, ?e jsem star?í 18 let </span> </div> <div> <a class="agree button-conversion" href="#"> Pokra?ovat </a> </div> </div> </div> </div>
請(qǐng)注意,初始時(shí)#snippet-ageTest-alertbox的display樣式應(yīng)設(shè)置為none,以確保在JavaScript控制之前是隱藏的。
接下來,將以下jQuery代碼添加到您的主題JavaScript文件或header.php/footer.php的<script>標(biāo)簽內(nèi)。為了確保WordPress的jQuery兼容性,建議使用jQuery(function($){...})包裹代碼。
jQuery(function($){ // 定義您的Cookie名稱 const cookieName = 'age-test'; // 獲取Cookie值 let ageTestCookie = getCookie(cookieName); // 檢查Cookie是否已設(shè)置,如果未設(shè)置則顯示彈窗 if (ageTestCookie !== 'shown'){ // 延遲2秒后淡入顯示彈窗,提供更好的用戶體驗(yàn) $("#snippet-ageTest-alertbox").delay(2000).fadeIn(); // 設(shè)置Cookie,標(biāo)記彈窗已顯示,99天后過期 setCookie(cookieName, 'shown', 99); } // 綁定“Pokra?ovat”按鈕的點(diǎn)擊事件,用于關(guān)閉彈窗 $('#snippet-ageTest-alertbox .agree.button-conversion').click(function(e) { e.preventDefault(); // 阻止默認(rèn)的鏈接跳轉(zhuǎn)行為 $('#snippet-ageTest-alertbox').fadeOut(); // 淡出隱藏彈窗 }); // (可選)如果點(diǎn)擊彈窗背景也應(yīng)關(guān)閉,可以添加此事件 // 注意:這可能會(huì)與按鈕點(diǎn)擊事件沖突,請(qǐng)根據(jù)實(shí)際UI設(shè)計(jì)選擇 // $('#snippet-ageTest-alertbox').click(function(e) { // // 確保點(diǎn)擊的是背景而不是彈窗內(nèi)部元素 // if ($(e.target).is(this)) { // $('#snippet-ageTest-alertbox').fadeOut(); // } // }); });
代碼解釋:
通過本教程,您應(yīng)該能夠成功地在WordPress網(wǎng)站上實(shí)現(xiàn)一個(gè)基于Cookie的、僅在首次訪問時(shí)顯示的年齡驗(yàn)證彈窗。這種方法兼顧了用戶體驗(yàn)和功能需求,提供了一個(gè)穩(wěn)定且可維護(hù)的解決方案。記住,除了功能實(shí)現(xiàn),良好的CSS樣式和對(duì)輔助功能的考慮同樣重要,可以共同提升網(wǎng)站的專業(yè)性和用戶友好性。
以上就是WordPress網(wǎng)站基于Cookie的年齡驗(yàn)證彈窗實(shí)現(xiàn)教程的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
每個(gè)人都需要一臺(tái)速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊(cè)表數(shù)據(jù)和不必要的后臺(tái)進(jìn)程會(huì)占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)