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 的隐私保护做法也能提升用户信任。