WordPress GDPR 合规与隐私保护全攻略:Cookie 通知、数据导出、隐私政策、用户数据删除
GDPR(欧盟通用数据保护条例)以及世界各地的隐私保护法规,要求网站对用户数据的收集、存储、处理和使用进行透明披露,并给予用户充分的控制权。WordPress 从 4.9.6 开始引入了隐私保护工具,但完整的合规工作还需要网站运营者主动配置和定制。
WordPress 内置的隐私工具 包括“隐私政策页面”生成、数据导出请求、数据删除请求。在后台设置 → 隐私中,你可以创建或选择一个已有页面作为隐私政策页。这个页面应当清晰说明网站收集了哪些数据、用于什么目的、数据保留多久、以及用户的权力。
Cookie 通知 是 GDPR 合规中最直观的部分。当用户访问你的网站时,需要告知网站使用了 Cookie,并获得用户的同意。WordPress 生态中有很多 Cookie 通知插件,但如果希望轻量化,你也可以手动实现:
add_action('wp_footer', 'add_cookie_consent_banner');
function add_cookie_consent_banner() {
if (isset($_COOKIE['cookie_consent_accepted'])) return;
?>
<div class="cookie-consent-banner" style="position:fixed;bottom:0;left:0;right:0;background:#333;color:#fff;padding:15px;z-index:9999;">
<p style="margin:0;display:inline-block;">
我们使用 Cookie 来提升您的浏览体验。<a href="<?php echo esc_url(get_privacy_policy_url()); ?>" style="color:#fff;text-decoration:underline;">查看隐私政策</a>
</p>
<button onclick="acceptCookies()" style="margin-left:20px;padding:8px 20px;background:#0073aa;color:#fff;border:none;border-radius:4px;cursor:pointer;">接受</button>
</div>
<script>
function acceptCookies() {
document.cookie = 'cookie_consent_accepted=yes; expires=<?php echo date('D, d M Y H:i:s', time() + 365 * 86400); ?> UTC; path=/';
document.querySelector('.cookie-consent-banner').style.display = 'none';
}
</script>
<?php
}
用户数据导出和删除请求 是 GDPR 赋予用户的两个重要权利。WordPress 后台的工具 → 导出个人数据和删除个人数据 中,管理员可以处理用户提交的请求。
如果你是开发者,可以通过 wp_privacy_personal_data_exporters 过滤器注册自定义数据导出器,让插件中存储的用户数据也能被导出:
add_filter('wp_privacy_personal_data_exporters', 'register_custom_data_exporter');
function register_custom_data_exporter($exporters) {
$exporters['my-plugin-data'] = array(
'exporter_friendly_name' => '我的插件数据',
'callback' => 'my_plugin_data_exporter',
);
return $exporters;
}
function my_plugin_data_exporter($email_address, $page = 1) {
$user = get_user_by('email', $email_address);
$data = array();
// 收集该用户的自定义数据
$user_meta = get_user_meta($user->ID);
// 构建导出数据
$data[] = array(
'group_id' => 'my_plugin',
'group_label' => '我的插件数据',
'item_id' => 'user-' . $user->ID,
'data' => array(
array('name' => '自定义字段1', 'value' => $user_meta['field1']),
array('name' => '自定义字段2', 'value' => $user_meta['field2']),
),
);
return array(
'data' => $data,
'done' => true,
);
}
数据删除类似,使用 wp_privacy_personal_data_erasers 过滤器注册自定义擦除器。
Cookie 的精细管理 需要区分必要 Cookie(如会话 Cookie)和非必要 Cookie(如分析、广告 Cookie)。非必要 Cookie 应当在用户同意后才加载。对于 Google Analytics、Facebook Pixel 等第三方服务的脚本,可以使用 Cookie 同意管理工具(如 CookieYes、OneTrust)或者手动控制:
add_action('wp_head', 'conditionally_load_analytics_script');
function conditionally_load_analytics_script() {
if (isset($_COOKIE['cookie_consent_accepted']) && $_COOKIE['cookie_consent_accepted'] === 'yes') {
// 加载 Google Analytics
echo '<!-- Google Analytics 代码 -->';
}
}
隐私政策的内容 需要根据你的网站实际收集的数据来撰写。一般建议包含以下章节:
-
我们收集哪些数据(注册信息、评论、联系表单、Cookie、日志)
-
数据用途(提供服务、优化体验、营销)
-
数据存储与安全措施
-
数据传输(是否跨境)
-
用户权利(访问、修改、删除、限制处理)
-
联系方式(数据保护负责人)
评论的隐私 是一个容易被忽视的细节。WordPress 默认会存储评论者的姓名、邮箱、IP 地址和 User Agent。你可以在评论表单中添加一个勾选框,征求用户同意存储这些数据。WordPress 内置了“评论同意”功能,在评论模板中调用:
$commenter = wp_get_current_commenter(); $consent = empty($commenter['comment_author_email']) ? '' : ' checked="checked"'; echo '<p><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes"' . $consent . ' />'; echo '<label for="wp-comment-cookies-consent">保存我的姓名、邮箱和网址,方便下次评论。</label></p>';
GDPR 合规不是一个一次性工作,而是一个持续的过程。当网站新增功能或集成新的第三方服务时,需要重新评估隐私影响。记录所有数据处理活动、定期更新隐私政策、及时响应用户请求,是长期合规的关键。
对于面向欧盟用户的网站,GDPR 合规是法定义务,不可忽视。即使你的网站主要面向中国用户,参考 GDPR 的隐私保护做法也能提升用户信任。

