説明
WP Consent API は、承認済み同意カテゴリに関するプラグイン間の通信を標準化するプラグインです。本プラグインを利用するには、Cookieバナープラグインと、WP Consent API に対応したプラグインが少なくとも1つ必要です。
本プラグインを使用することで、対応するすべてのプラグインが、現在の同意カテゴリを読み取りおよび登録するために、同じメソッドセットを利用できるようになります。これにより、同意管理プラグインとその他のプラグインが連携して動作し、プライバシー関連法規への準拠が向上します。
警告: 本プラグイン自体は、同意処理を行いません。本プラグインは、Consent API に対応していないプラグインの数を表示し、Cookie バナープラグインと、Cookie を設定したりユーザーデータを追跡したりするプラグインとの間の連携を円滑にすることで、サイトのコンプライアンスを向上させます。
本プラグインは、どのような問題を解決しますか ?
現在、同意管理プラグインによって、Facebook、Google Maps、Twitter などのサードパーティ製サービスをブロックすることが可能です。しかし、WordPress プラグインが PHP クッキーを設定する場合、同意管理プラグインでは、これを阻止できません。
第二に、一部のプラグインは、JavaScript ファイル内にクライアントサイドのトラッキングコードを組み込んでおり、これがブロックされるとサイトが正常に動作しなくなります。
あるいは、そのようなプラグインの JavaScript が minify 処理されている場合、URL が判別不能となり、自動ブロックスクリプトによって検出されなくなる可能性があります。
最後に、ブロック方式を採用するには、データを追跡するあらゆる種類の URL のリストが必要となります。プラグインが準拠する汎用的な API があれば、ウェブマスターがサイトを準拠させる作業を大幅に容易にできます。
この API を使用することで、サードパーティのサービスによるユーザーデータの追跡は阻止されますか ?
この API は、主に WordPress プラグインによるコンプライアンスに準拠したファーストパーティ Cookie やトラッキングを対象としています。たとえば、Facebook などのプラグインが動作する場合、この API の利用が役立ちます。ユーザーが Facebook の iframe を埋め込んだ場合、最初にその iframe やスクリプトを無効にするブロックツールが必要となります。
サードパーティのスクリプトは、同意管理プラグインのブロック機能によってブロックする必要があります。これをコア機能で行うのは介入しすぎであり、またすべてのユーザーに適用できるものでもありません: EU などのオプトイン地域からの訪問者を持つユーザーのみが、このような機能を必要とするからです。また、このような機能には、システムに不具合が生じるリスクもあります。さらに、これらをブロックして適切なプレースホルダーを表示するには、より高度なコードが必要となりますが、前述の理由から、これらすべては WordPress コアの一部であるべきではないと私は考えます。
しくみは ?
特定の同意カテゴリ (たとえば、「マーケティング」) に対して、同意が得られているか否かを示す指標は、以下の2つです:
1) 地域ごとの consent_type (オプトイン、オプトアウト、またはその他の consent_type);
2) 訪問者の選択: 未設定、許可、拒否。
The consent_type is a function that wraps a filter, “wp_get_consent_type”. If there’s no consent management plugin to set it, it will return false. This will cause all consent categories to return true, allowing cookies to be set on all categories.
このフィルターを使用してオプトインが設定されている場合、訪問者の選択値が「許可」である場合にのみ、カテゴリは true を返します。
地域ベースの consent_type が「オプトアウト」の場合、訪問者の選択が設定されていないか、「許可」に設定されていると、true を返します。
クライアントサイドでは、同意管理用プラグインを使用して、同意の種類を動的に変更したり、いくつかのクッキーカテゴリを設定できたりします。
本プラグインは、フックを使用して変更を監視したり、特定のカテゴリの値を確認できます。
カテゴリやその他のほとんどの機能は、フィルターを使って拡張できます。
既存の連携
カテゴリ別に分類し、アルファベット順にソート
見本プラグイン
- 見本プラグイン。このプラグインは基本的にショートコードで構成されており、トラッキング中か否かを示すメッセージを表示する div 要素が含まれています。実際にはトラッキングは行われません 🙂
同意管理プロバイダー
- Abconsent Sirdata CMP。
- Beautiful Cookie Consent Banner。
- Clickio Consent
- Complianz GDPR/CCPA。
- Consent Studio。
- consentmanager。
- Conzent。
- Cookiebot。
- CookieFirst。
- CookieHub。
- CookieTractor。
- CookieYes – Cookie Banner for Cookie Consent。
- GDPR Cookie Compliance。
- GDPR Cookie Consent Plugin – CCPA Ready。
- GetTerms。
- iubenda | All-in-one Compliance。
- Pressidium Cookie Consent。
- TrustArc Cookie Consent Manager
同意要求プラグイン
- AddToAny。
- AFL UTM Tracker Plugin。
- Burst Statistics。
- Google Site Kit。
- Pixel Manager for WooCommerce。
- Woo。
- WP Statistics。
デモサイト
wpconsentapi.org
下記は、デモサイトの構築に使用したプラグインです:
- Complianz
- 見本プラグイン
javascript, consent management plugin
//set consent type
window.wp_consent_type = 'optin'
//dispatch event when consent type is defined. This is useful if the region is detected server side, so the consent type is defined later during the pageload
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, tracking plugin
//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")
}
}
}
});
//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.' ) );
}
}
add_action('plugins_loaded', 'my_wordpress_register_cookies');
if (wp_has_consent('marketing')){
//do marketing stuff
}
サービスレベル同意
カテゴリベースの同意に加え、この API はサービスレベルの同意制御もサポートしています。これにより、同意管理プラグインは、カテゴリとは独立して、特定のサービス (「google-analytics」や「facebook-pixel」など) に対する同意を許可または拒否できます。wp_has_service_consent() を使用してサービスの同意を確認する際、API はまず、そのサービスに対して明示的な同意が存在するか否かを確認します。明示的な同意が設定されていない場合、そのサービスのカテゴリの同意ステータスにフォールバックします。これにより、きめ細かに制御できます: ユーザーは統計用クッキーを一般的に受け入れる一方で、特定の分析サービスに対しては明示的に拒否できます。
サービス同意は、サーバー側 (PHP) とクライアント側 (JavaScript) の両方で確認および設定できます:
PHP:
//check if a specific service has consent
if ( wp_has_service_consent( 'google-analytics' ) ) {
//activate google analytics
}
//check if a service is explicitly denied
if ( wp_is_service_denied( 'facebook-pixel' ) ) {
//service was explicitly denied by user
}
//set service consent
wp_set_service_consent( 'google-analytics', true ); //grant consent
wp_set_service_consent( 'facebook-pixel', false ); //deny consent
//listen for service consent changes
add_action( 'wp_consent_service_changed', function( $service, $consented ) {
error_log( "Service {$service} consent changed to: " . ( $consented ? 'granted' : 'denied' ) );
}, 10, 2 );
JavaScript:
//check service consent
if ( wp_has_service_consent( 'youtube' ) ) {
//activate tracking
}
//check if explicitly denied
if ( wp_is_service_denied( 'facebook-pixel' ) ) {
//service denied
}
//set service consent
wp_set_service_consent( 'youtube', true );
//listen for service consent changes
document.addEventListener( 'wp_consent_api_status_change_service', function( e ) {
console.log( 'Service: ' + e.detail.service + ', consented: ' + e.detail.value );
});
コードに関するアドバイスはありますか ? GitHub にも参加しています !
インストール
本プラグインのインストール方法:
本プラグインをダウンロードします。
本プラグインを wp-content/plugins ディレクトリにアップロードします。
WordPress 管理画面の「プラグイン」に移動し、「有効化」をクリックします。
FAQ
-
いいえ、本プラグインは、各プラグインが Cookie の設置やユーザーデータの追跡が許可されているか否かを確認できる、フレームワークを提供するものです。
本プラグインを利用するには、同意管理を行うための同意管理プラグインと、この API から読み取れる同意レベルに従うプラグインの両方が必要です。 -
私のプラグインを連携させるには、どうすればよいでしょうか ?
-
Cookie を設置したりユーザーデータを追跡したりする各アクションについて、どのような種類の追跡が行われるかを検討する必要があります。同意のカテゴリーには、次の5つがあります: 機能性情報、匿名化統計情報、統計情報、設定情報、マーケティング情報。これらについては下記で説明しています。あなたのコードでは、該当するカテゴリに対して同意が得られているか否かを確認する必要があります。Cookie バナープラグインが有効になっていない場合、Consent API は常に同意済み (true) を返します。
見本プラグインおよび上記のコード例をご確認ください。 -
同意のカテゴリには、どのような違いがありますか ?
-
統計情報:
統計目的のみに使用されるクッキー (Analytics Cookies)、またはその他の形式のローカルストレージです。匿名化された統計情報:
ファーストパーティドメインに配置され、特定の個人を特定できないものとされている、匿名の統計目的のみに使用される Cookie (Anonymous Analytics Cookies)、またはその他の形式のローカルストレージです。マーケティング情報:
広告の配信や、Web サイト内または複数の Web サイトにわたるユーザーの行動追跡を行うため、あるいは同様のマーケティング目的でユーザープロファイルを作成するために必要な、Cookie またはその他のローカルストレージです。機能性情報:
電子通信ネットワークを介した通信の伝送を行うことを唯一の目的として使用される、Cookie またはその他の形式のローカルストレージです;もしくは
このテクニカルストレージまたはアクセスは、加入者またはユーザーが明示的に要求した特定のサービスの利用を可能にするという正当な目的のために、厳密に必要不可欠なものです。Cookie が無効になっている場合、要求された機能は利用できません。したがって、これらは不可欠な機能性情報 Cookie となります。
設定情報:
統計、匿名化統計、マーケティング、または機能性に関連するものではなく、かつ設定を保存するという正当な目的のためにテクニカルストレージまたはアクセスが必要な、Cookie またはその他の形式のローカルストレージです。
評価
貢献者と開発者
WP Consent API はオープンソースソフトウェアです。以下の人々がこのプラグインに貢献しています。
貢献者変更履歴
2.0.1
修正: 「preferences」カテゴリの typo により、コメント Cookie の機能が機能性情報カテゴリの同意設定に従うようになっていた課題を修正しました。@sjinks さん、報告ありがとうございます。
2.0.0
- 新: サービスレベル同意 API – カテゴリベースの同意に加え、サービスごとのきめ細かな同意管理が可能。
- 新: 特定サービスに対する同意の有無を確認する
wp_has_service_consent()関数 - 新: 特定サービスが明示的に拒否されているか否かを確認する
wp_is_service_denied()関数 - 新: 特定サービスに対する同意を設定する
wp_set_service_consent()関数 - 新: サービスの同意設定が変更された際にトリガーされる、
wp_consent_service_changedアクションフック - 新: JavaScript 関数
wp_has_service_consent()、wp_is_service_denied()、wp_set_service_consent() - 新: サービス同意状況の変更に関する
wp_consent_api_status_change_serviceJavaScript イベント - 改善: コード品質の向上と IDE のサポート強化のため、コードベース全体に型ヒントを追加しました
- 改善: プラグインの初期化をより簡潔にするため、
init()メソッドを追加しました - セキュリティ: _doing_it_wrong 関数内のログ通知をエスケープしました。@mujuonly さん、報告ありがとうございます。
1.0.8
- テスト済みバージョンを更新
- WordPress v6.7による翻訳ロード通知を防止するため、翻訳のロードと plugin_data のロードを廃止しました。@mujuonly さん、報告ありがとうございます。
- 使用されなくなった wp_has_cookie_info 関数を破棄しました。@szepeviktor さん、報告ありがとうございます。
1.0.7
- テスト済みバージョン
1.0.6
- テスト済みバージョン
1.0.5
- テスト済みバージョン
1.0.4
- 改善: 同意内容に実際の変更が検出された場合のみ、変更イベントをトリガーする。
1.0.3
- 修正: wp_has_consent 関数には、サーバーサイドでのオプトイン同意チェックにおいて、常に true を返す原因となる条件が含まれていました。
1.0.2
- $is_personal_data が非推奨となったため、$collected_personal_data のドキュメントを修正しました (@jazzsequence さん、報告ありがとうございます。https://github.com/rlankhorst/wp-consent-level-api/issues/54)
- Fix the docblock so it reflects the actual value returned (props @jazzsequence, https://github.com/rlankhorst/wp-consent-level-api/issues/52)
- サイトヘルスに対するスタイリング変更
- コード構造の変更
- Removed is_personal_data property, as it’s implicitly contained in the personaldata property
- Cookie のプレフィックスをフィルタリング可能にしました。@jazzsequence さん、報告ありがとうございます。
1.0.1
- 既存の連携として Cookiebot を追加しました
- WordPress のコーディングスタイルに準拠するための、若干の軽微な改善
1.0.0
- getcookie メソッドと命名規則を統一するため、consent_api_setcookie を consent_api_set_cookie に変更しました
- added prefix in javascript set and get methods, to be compatible with PHP cookies, props @phpgeek
- 重複していた統計情報カテゴリを削除しました。@phpgeek さん、報告ありがとうございます。

