altis / consent-api
Altis的同意API功能
Requires
- php: >=7.1
Requires (Dev)
- humanmade/coding-standards: ^1.1.0
README
从rlankhorst/wp-consent-level-api的JavaScript同意API中分支出来
完全移除基于PHP的API,改为仅使用JavaScript的同意API。
注意:为了使代码检查工作正常,必须已经安装并全局存在eslint
。
描述
同意API用于读取和注册当前的同意类别,允许同意管理插件和其他插件协同工作,提高合规性。
此插件解决了什么问题?
目前,同意管理插件可以阻止Facebook、Google Maps、Twitter等第三方服务,但如果WordPress插件放置了PHP Cookie,同意管理插件无法阻止。
其次,有些插件在客户端的javascript文件中集成跟踪代码,当被阻止时,会破坏网站。
或者,如果此类插件的javascript被压缩,导致URL不可识别,自动阻止脚本将无法检测到。
最后,阻止方法需要列出放置Cookie或使用其他跟踪手段的所有类型的URL列表。一个插件遵循的通用API可以大大简化网站管理员使网站符合规定的过程。
此API的使用是否可以防止第三方服务跟踪用户数据?
此API主要用于符合第一方Cookie或其他跟踪手段的WordPress插件。如果此类插件触发例如Facebook,使用此API将有所帮助。如果用户手动嵌入facebook iframe,则需要使用cookie阻止器,最初禁用iframe和/或脚本。
第三方脚本必须通过同意管理插件中的阻止功能进行阻止。在核心中这样做可能会侵入,而且也不适用于所有用户:只有来自欧盟等opt in地区的访客才需要此类功能。此功能还存在破坏东西的风险。此外,阻止这些并显示漂亮的占位符需要更复杂的代码,所有这些按我的意见都不应该成为WordPress核心的一部分,原因相同。
话虽如此,同意API可用于决定是否阻止iframe或脚本。
它是如何工作的?
有两个指标可以一起表明是否为某个同意类别提供了同意,例如“营销”
- 基于区域的
consent_type
,可以是optin
、optout
或其他可能的consent_types
; - 以及访客的选择:
not set
、allow
或deny
。
consent_type
是一个包装了过滤器的函数,即wp_get_consent_type
。如果没有同意管理插件来设置它,它将返回false
。这将导致所有同意类别都返回true
,允许所有类别的Cookie和其他类型的跟踪。
如果使用此过滤器设置optin
,则类别只有在访客的选择值为allow
时才返回true
。
如果基于区域的consent_type
是optout
,则如果访客的选择未设置或为allow
,则返回true
。
客户端,同意管理插件可以动态地操作同意类型,并设置适用的类别。
插件可以使用钩子来监听更改,或检查给定类别的值。
类别和大多数其他内容都可以通过过滤器进行扩展。
代码示例
如果您有其他代码建议,请将其在GitHub上提交PR!
javascript, 同意管理插件
//dynamically set consent type window.wp_consent_type = 'optin'; //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!"); }
常见问题
此插件会阻止第三方服务跟踪用户数据吗?
不,此插件提供了一个框架,通过该框架插件可以知道它们是否被允许放置cookie或使用其他跟踪手段。该插件需要一个同意管理插件来进行同意管理,以及一个遵循从该API读取的同意级别的插件。
我应该如何集成我的插件?
cookie或其他任何形式的本地存储都可以有功能和目的。功能是cookie所执行的具体任务。因此,功能可以是“存储IP地址”。目的可以被视为功能的原因。因此,IP地址可能因为需要用于统计而存储;或者因为它用于营销/跟踪目的而存储;或者因为它是功能性需求而存储。
对于每个功能,您应该考虑该功能的目的是什么。有5个目的类别:功能、匿名统计、统计、偏好、营销。这些将在下面解释。您的代码应检查是否已给出适用类别的同意。如果没有cookie横幅插件处于活动状态,Consent API将始终返回同意(true)。请查看示例插件和上面的代码示例。
同意类别之间的区别是什么?
统计
:
仅用于统计目的(分析cookie)的cookie或其他任何形式的本地存储。
匿名统计
:
仅用于匿名统计目的(匿名分析cookie)的cookie或其他任何形式的本地存储,这些cookie放置在第一方域上,并且不允许识别特定个人。
营销
:
创建用户资料以发送广告或跟踪用户在网站或跨网站上的营销目的所必需的cookie或其他任何形式的本地存储。
功能
:
cookie或任何其他形式的本地存储仅用于在电子通信网络中传输通信;
或者
技术存储或访问对于实现订阅者或用户明确请求的特定服务的合法目的是必要的。如果禁用cookie,则请求的功能将不可用。这使得它们成为必要的功能cookie。
偏好
:
不能视为统计、匿名统计、营销或功能的cookie或其他任何形式的本地存储,其中技术存储或访问对于存储偏好是必要的。