
本教程详细介绍了如何在wordpress网站上实现一个仅在首次访问时显示的年龄验证弹窗。通过利用javascript的cookie功能,文章提供了设置和获取cookie的实用函数,并指导如何将其集成到jquery代码中,以控制弹窗的显示逻辑和关闭行为,确保用户体验和合规性。
在某些特定类型的WordPress网站上,例如销售酒精、烟草或成人内容,强制性的年龄验证弹窗是合规性的重要组成部分。理想的年龄验证弹窗应具备以下特性:
直接使用localStorage或简单的jQuery脚本可能无法在WordPress环境中完美实现这些要求,尤其是在跨会话(session)或跨页面访问时保持状态。本文将介绍一种基于JavaScript Cookie的稳健解决方案。
为了实现“仅在首次访问显示”的功能,我们需要一种机制来在用户的浏览器中持久化地存储一个状态。Cookie是实现这一目标的理想选择,因为它可以在用户的浏览器中设置一个带有过期时间的键值对,并在后续请求中被网站读取。
首先,我们需要两个核心的JavaScript函数来设置和获取Cookie:
/**
* 设置一个Cookie
* @param {string} cname - Cookie的名称
* @param {string} cvalue - Cookie的值
* @param {number} exdays - Cookie的过期天数
*/
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 "";
}这些函数应该被放置在您的WordPress主题的JavaScript文件中,或者直接嵌入到header.php或footer.php的<script>标签内。
有了Cookie操作函数后,我们可以编写jQuery代码来控制弹窗的显示和隐藏。
假设您的年龄验证弹窗HTML结构如下,通常放置在header.php或footer.php中,以便在所有页面加载时可用:
<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>请注意,初始时#snippet-ageTest-alertbox的display样式应设置为none,以确保在JavaScript控制之前是隐藏的。
接下来,将以下jQuery代码添加到您的主题JavaScript文件或header.php/footer.php的<script>标签内。为了确保WordPress的jQuery兼容性,建议使用jQuery(function($){...})包裹代码。
jQuery(function($){
// 定义您的Cookie名称
const cookieName = 'age-test';
// 获取Cookie值
let ageTestCookie = getCookie(cookieName);
// 检查Cookie是否已设置,如果未设置则显示弹窗
if (ageTestCookie !== 'shown'){
// 延迟2秒后淡入显示弹窗,提供更好的用户体验
$("#snippet-ageTest-alertbox").delay(2000).fadeIn();
// 设置Cookie,标记弹窗已显示,99天后过期
setCookie(cookieName, 'shown', 99);
}
// 绑定“Pokračovat”按钮的点击事件,用于关闭弹窗
$('#snippet-ageTest-alertbox .agree.button-conversion').click(function(e) {
e.preventDefault(); // 阻止默认的链接跳转行为
$('#snippet-ageTest-alertbox').fadeOut(); // 淡出隐藏弹窗
});
// (可选)如果点击弹窗背景也应关闭,可以添加此事件
// 注意:这可能会与按钮点击事件冲突,请根据实际UI设计选择
// $('#snippet-ageTest-alertbox').click(function(e) {
// // 确保点击的是背景而不是弹窗内部元素
// if ($(e.target).is(this)) {
// $('#snippet-ageTest-alertbox').fadeOut();
// }
// });
});代码解释:
通过本教程,您应该能够成功地在WordPress网站上实现一个基于Cookie的、仅在首次访问时显示的年龄验证弹窗。这种方法兼顾了用户体验和功能需求,提供了一个稳定且可维护的解决方案。记住,除了功能实现,良好的CSS样式和对辅助功能的考虑同样重要,可以共同提升网站的专业性和用户友好性。
以上就是WordPress网站基于Cookie的年龄验证弹窗实现教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号