0

0

WordPress网站基于Cookie的年龄验证弹窗实现教程

心靈之曲

心靈之曲

发布时间:2025-10-17 13:29:18

|

229人浏览过

|

来源于php中文网

原创

WordPress网站基于Cookie的年龄验证弹窗实现教程

本教程详细介绍了如何在wordpress网站上实现一个仅在首次访问时显示的年龄验证弹窗。通过利用javascriptcookie功能,文章提供了设置和获取cookie的实用函数,并指导如何将其集成到jquery代码中,以控制弹窗的显示逻辑和关闭行为,确保用户体验和合规性。

引言:WordPress网站年龄验证弹窗的挑战

在某些特定类型的WordPress网站上,例如销售酒精、烟草或成人内容,强制性的年龄验证弹窗是合规性的重要组成部分。理想的年龄验证弹窗应具备以下特性:

  1. 首次访问显示: 仅在用户首次访问网站时弹出,避免重复打扰。
  2. 模态化设计: 弹窗覆盖页面内容,要求用户进行交互才能继续浏览。
  3. 点击关闭: 用户确认年龄后,弹窗应立即消失,且在后续访问中不再出现。

直接使用localStorage或简单的jQuery脚本可能无法在WordPress环境中完美实现这些要求,尤其是在跨会话(session)或跨页面访问时保持状态。本文将介绍一种基于JavaScript Cookie的稳健解决方案。

核心机制:JavaScript Cookie的应用

为了实现“仅在首次访问显示”的功能,我们需要一种机制来在用户的浏览器中持久化地存储一个状态。Cookie是实现这一目标的理想选择,因为它可以在用户的浏览器中设置一个带有过期时间的键值对,并在后续请求中被网站读取。

1. 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的

弹窗显示与隐藏逻辑

有了Cookie操作函数后,我们可以编写jQuery代码来控制弹窗的显示和隐藏。

DALL·E 2
DALL·E 2

OpenAI基于GPT-3模型开发的AI绘图生成工具,可以根据自然语言的描述创建逼真的图像和艺术。

下载

2. HTML结构示例

假设您的年龄验证弹窗HTML结构如下,通常放置在header.php或footer.php中,以便在所有页面加载时可用:

请注意,初始时#snippet-ageTest-alertbox的display样式应设置为none,以确保在JavaScript控制之前是隐藏的。

3. JavaScript集成与逻辑

接下来,将以下jQuery代码添加到您的主题JavaScript文件或header.php/footer.php的

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();
    //     }
    // });
});

代码解释:

  • jQuery(function($){...}):这是WordPress推荐的jQuery安全模式,确保$符号指向jQuery库。
  • getCookie('age-test'):尝试获取名为age-test的Cookie。
  • if (ageTestCookie !== 'shown'):如果Cookie不存在或其值不是shown,则表示用户是首次访问。
  • $("#snippet-ageTest-alertbox").delay(2000).fadeIn():选择ID为snippet-ageTest-alertbox的弹窗元素,延迟2秒后以淡入效果显示。
  • setCookie('age-test', 'shown', 99):弹窗显示后,立即设置Cookie,将其值设为shown,并设置99天的过期时间。这意味着在接下来的99天内,用户再次访问时不会看到此弹窗。
  • $('#snippet-ageTest-alertbox .agree.button-conversion').click(...):当用户点击弹窗内的“Pokračovat”按钮时,阻止其默认行为(如页面滚动),然后淡出隐藏弹窗。

注意事项与最佳实践

  1. 代码放置位置:
    • 推荐: 将JavaScript代码(包括Cookie函数和jQuery逻辑)放入一个独立的.js文件(例如age-verify.js),并通过WordPress的wp_enqueue_script()函数在functions.php中正确加载。这样可以提高代码的可维护性和性能。
    • 替代方案: 如果您希望快速测试,可以直接将

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
jquery插件有哪些
jquery插件有哪些

jquery插件有jQuery UI、jQuery Validate、jQuery DataTables、jQuery Slick、jQuery LazyLoad、jQuery Countdown、jQuery Lightbox、jQuery FullCalendar、jQuery Chosen和jQuery EasyUI等。本专题为大家提供jquery插件相关的文章、下载、课程内容,供大家免费下载体验。

150

2023.09.12

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

311

2023.10.13

jquery删除元素的方法
jquery删除元素的方法

jquery可以通过.remove() 方法、 .detach() 方法、.empty() 方法、.unwrap() 方法、.replaceWith() 方法、.html('') 方法和.hide() 方法来删除元素。更多关于jquery相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

395

2023.11.10

jQuery hover()方法的使用
jQuery hover()方法的使用

hover()是jQuery中一个常用的方法,它用于绑定两个事件处理函数,这两个函数将在鼠标指针进入和离开匹配的元素时执行。想了解更多hover()的相关内容,可以阅读本专题下面的文章。

504

2023.12.04

jquery实现分页方法
jquery实现分页方法

在jQuery中实现分页可以使用插件或者自定义实现。想了解更多jquery分页的相关内容,可以阅读本专题下面的文章。

182

2023.12.06

jquery中隐藏元素是什么
jquery中隐藏元素是什么

jquery中隐藏元素是非常重要的一个概念,在使用jquery隐藏元素之前,需要先了解css样式中关于元素隐藏的属性,比如display、visibility、opacity等属性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

120

2024.02.23

jquery中什么是高亮显示
jquery中什么是高亮显示

jquery中高亮显示是指对页面搜索关键词时进行高亮显示,其实现办法:1、先获取要高亮显示的行,获取搜索的内容,再遍历整行内容,最后添加高亮颜色;2、使用“jquery highlight”高亮插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

176

2024.02.23

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

38

2026.01.13

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

391

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.1万人学习

CSS教程
CSS教程

共754课时 | 24.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号