rlankhorst/wp-consent-level-api

WordPress 的同意 API 功能插件

v1.0.7 2023-08-15 10:09 UTC

README

贡献者: RogierLankhorst, xkon, aurooba, mujuonly, phpgeek, paapst, aahulsebos, mundschenk-at

标签: consent, privacy

至少需要: 5.0

许可证: GPL2

测试到: 5.3

需要 PHP: 5.6

稳定标签: 1.0.0

描述

同意 API 用于读取和注册当前的同意类别,允许同意管理插件和其他插件协同工作,提高合规性。

这个插件解决了什么问题?

目前,同意管理插件可以阻止第三方服务,如 Facebook、Google Maps、Twitter 等。但如果 WordPress 插件放置了 PHP 糖果,同意管理插件则无法阻止。

其次,有一些插件在客户端的 JavaScript 文件中集成跟踪代码,如果被阻止,将破坏网站。

或者,如果此类插件的 JavaScript 被压缩,导致 URL 不可识别,它不会被自动阻止脚本检测到。

最后,阻止方法需要列出放置 cookie 或使用其他跟踪手段的所有类型的 URL 列表。一个插件可以遵守的通用 API 可以极大地帮助网站管理员使网站合规。

使用此 API 是否可以防止第三方服务跟踪用户数据?

此 API 主要针对 WordPress 插件中合规的第一方 cookies 或其他跟踪手段。如果此类插件触发例如 Facebook,使用此 API 将有所帮助。如果用户手动嵌入一个 Facebook iframe,则需要一个初始禁用 iframe 或脚本的 cookie 阻止器。

第三方脚本必须由同意管理插件中的阻止功能来阻止。在核心中这样做会过于侵入,并且也不适用于所有用户:只有来自欧盟等自愿地区访客的用户需要此类功能。此功能也存在破坏事物的风险。此外,阻止这些并显示一个漂亮的占位符,还需要更复杂的代码,所有这些在我看来都不应该是 WordPress 核心的组成部分,出于同样的原因。

话虽如此,同意 API 可以用来决定是否应该阻止 iframe 或脚本。

它是如何工作的?

有两个指标,共同表明是否为某个同意类别提供了同意,例如 "营销"。

  1. 基于区域的 consent_type,可以是 optinoptout 或其他可能的 consent_types
  2. 以及访客的选择:未设置允许拒绝

consent_type 是一个包装了过滤器的函数,wp_get_consent_type。如果没有同意管理插件来设置它,它将返回 false。这将导致所有同意类别都返回 true,允许所有类别的 cookies 和其他类型的跟踪。

如果使用此过滤器设置了 optin,则类别只有在访客的选择值为 允许 时才返回 true

如果基于区域的 consent_typeoptout,则如果访客的选择未设置或为 允许,它将返回 true

客户端,同意管理插件可以动态地操作同意类型,并设置适用的类别。

插件可以使用钩子来监听更改,或检查给定类别的值。

类别以及其他大多数内容都可以通过过滤器进行扩展。

现有集成

演示网站

https://wpconsentapi.org/

设置此插件所使用的插件

代码示例

如果您有任何其他代码建议,请通过GitHub提交PR!

javascript, 同意管理插件

//dynamically set consent type
window.wp_consent_type = 'optin';

//dispatch event when consent type is defined
let event = new CustomEvent('wp_consent_type_defined');
document.dispatchEvent( event );

//consent management plugin sets cookie when consent category value changes
wp_set_consent('marketing', 'allow');

javascript, 放置或跟踪cookie的插件

//listen to consent change event
document.addEventListener("wp_listen_for_consent_change", function (e) {
  var changedConsentCategory = e.detail;
  for (var key in changedConsentCategory) {
    if (changedConsentCategory.hasOwnProperty(key)) {
      if (key === 'marketing' && changedConsentCategory[key] === 'allow') {
        console.log("just given consent, track user data")
      }
    }
  }
});

//basic implementation of consent check:
if (wp_has_consent('marketing')){
  activateMarketing();
  console.log("set marketing stuff now!");
} else {
  console.log("No marketing stuff please!");
}

PHP

//declare compliance with consent level API
$plugin = plugin_basename( __FILE__ );
add_filter( "wp_consent_api_registered_{$plugin}", '__return_true' );

/**
* Example how a plugin can register cookies with the consent API 
 * These cookies can then be shown on the front-end, to the user, with wp_get_cookie_info()
 */

function my_wordpress_register_cookies(){
	if ( function_exists( 'wp_add_cookie_info' ) ) {
		wp_add_cookie_info( 'AMP_token', 'AMP', 'marketing', __( 'Session' ), __( 'Store a unique User ID.' ), false, false, false );
	}
}
add_action('plugins_loaded', 'my_wordpress_register_cookies');


//check if user has given marketing consent. Possible consent categories/purposes:
//functional, preferences', statistics', statistics-anonymous', statistics', marketing',
if (wp_has_consent('marketing')){
  //do marketing stuff
}

//set the consent type (optin, optout, default false)
add_filter( 'wp_get_consent_type', 'my_set_consenttype' , 10, 1 );
function my_set_consenttype($consenttype){
  return 'optin';
}

//filter consent categories types, example: remove the preferences category
add_filter( 'wp_consent_categories', 'my_set_consentcategories' , 10, 1 );
function my_set_consentcategories($consentcategories){
  unset($consentcategories['preferences']);
  return $consentcategories;
}

安装

要安装此插件

  1. 下载插件
  2. 将插件上传到wp-content/plugins目录
  3. 转到WordPress管理后台的“插件”,然后点击激活。

常见问题

此插件是否会阻止第三方服务跟踪用户数据?

不,此插件提供了一个框架,插件可以通过该框架了解是否允许它们放置cookie或使用其他跟踪手段。该插件需要用于同意管理的同意管理插件,以及遵循同意级别(如API所示)的插件。

我应该如何集成我的插件?

cookie或其他任何形式的本地存储都可以有一个功能和目的。功能是cookie特有的任务。所以功能可以是“存储IP地址”。目的可以看作是功能背后的原因。所以IP地址可能是因为需要用于统计;或者是因为它被用于营销/跟踪目的;或者是因为它需要用于功能目的。

对于每个功能,您应该考虑该功能的目的是什么。有5个目的类别:功能、匿名统计、统计、偏好、营销。这些将在下面解释。您的代码应该检查是否已给出适用于相应类别的同意。如果没有激活cookie横幅插件,Consent API将始终返回同意(true)。请查看示例插件和上面的代码示例。

同意类别之间的区别是什么?

  • 统计

用于统计目的(分析cookie)的cookie或其他任何形式的本地存储。

  • 匿名统计

用于匿名统计目的(匿名分析cookie)的cookie或其他任何形式的本地存储,这些cookie放置在第一方域上,并且不允许识别特定个人。

  • 营销

创建用户档案以发送广告或跟踪用户在网站或网站之间进行类似营销目的所需的cookie或其他任何形式的本地存储。

  • 功能

cookie或其他任何形式的本地存储仅用于在电子通信网络上执行通信传输;

或者

技术存储或访问对于实现订阅者或用户明确请求的特定服务的合法目的来说是必要的。如果禁用cookie,则请求的功能将不可用。这使它们成为基本功能cookie。

  • 偏好

不能被视为统计、匿名统计、营销或功能的cookie或其他任何形式的本地存储,并且技术存储或访问对于存储偏好是必要的。

变更日志

1.0.0

升级通知

屏幕截图