[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f2YkGufZ9PiJ_hIx5jrVMAUepy2erZyBr5GtFzpo80mA":3},{"slug":4,"display_name":5,"profile_url":6,"plugin_count":7,"total_installs":8,"avg_security_score":9,"avg_patch_time_days":10,"trust_score":11,"computed_at":12,"plugins":13},"rogierlankhorst","Rogier Lankhorst","https:\u002F\u002Fprofiles.wordpress.org\u002Frogierlankhorst\u002F",2,200020,93,30,89,"2026-04-03T19:58:27.869Z",[14,38],{"slug":15,"name":16,"version":17,"author":5,"author_profile":6,"description":18,"short_description":19,"active_installs":20,"downloaded":21,"rating":22,"num_ratings":7,"last_updated":23,"tested_up_to":24,"requires_at_least":25,"requires_php":26,"tags":27,"homepage":33,"download_link":34,"security_score":22,"vuln_count":35,"unpatched_count":35,"last_vuln_date":36,"fetched_at":37},"wp-consent-api","WP Consent API","2.0.1","\u003Cp>WP Consent API is a plugin that standardizes the communication of accepted consent categories between plugins. It requires a cookie banner plugin and, at least, one other plugin that supports the WP Consent API.\u003C\u002Fp>\n\u003Cp>With this plugin, all supporting plugins can use the same set of methods to read and register the current consent category, allowing consent management plugins and other plugins to work together, improving compliance with privacy laws.\u003C\u002Fp>\n\u003Cp>WARNING: the plugin itself will not handle consent. It will show you how many plugins you have without Consent API support and will improve compliance on your site by ensuring smooth communication between cookie banner plugins and plugins that set cookies or track user data.\u003C\u002Fp>\n\u003Ch4>What problem does this plugin solve?\u003C\u002Fh4>\n\u003Cp>Currently, it is possible for a consent management plugin to block third-party services like Facebook, Google Maps, Twitter, etc. But if a WordPress plugin places a PHP cookie, a consent management plugin cannot prevent this.\u003C\u002Fp>\n\u003Cp>Secondly, some plugins integrate the tracking code on the clientside in javascript files that, when blocked, break the site.\u003C\u002Fp>\n\u003Cp>Or, if such a plugin’s javascript is minified, causing the URL to be unrecognizable and won’t get detected by an automatic blocking script.\u003C\u002Fp>\n\u003Cp>Lastly, the blocking approach requires a list of all types of URL’s that tracks data. A generic API where plugins adhere to can greatly\u003Cbr \u002F>\nfacilitate a webmaster in getting a site compliant.\u003C\u002Fp>\n\u003Ch4>Does usage of this API prevent third-party services from tracking user data?\u003C\u002Fh4>\n\u003Cp>Primary this API is aimed at compliant first-party cookies or tracking by WordPress plugins. If such a plugin triggers, for example, Facebook,\u003Cbr \u002F>\nusage of this API will be of help. If a user embeds a Facebook iframe, a blocking tool is needed that initially disables the iframe and or scripts.\u003C\u002Fp>\n\u003Cp>Third-party scripts have to blocked by blocking functionality in a consent management plugin. To do this in core would be to intrusive, and is also not applicable to all users: only users with visitors from opt-in regions such as the European Union require such a feature. Such a feature also has a risk of breaking things. Additionally, blocking these and showing a nice placeholder requires even more sophisticated code, all of which should in my opinion not be part of WordPress core, for the same reasons.\u003C\u002Fp>\n\u003Ch4>How does it work?\u003C\u002Fh4>\n\u003Cp>There are two indicators that together tell if consent is given for a specific consent category, e.g., “marketing”:\u003Cbr \u002F>\n1) the region based consent_type, which\u003Cbr \u002F>\ncan be opt-in, opt-out, or other possible consent_types;\u003Cbr \u002F>\n2) and the visitor’s choice: not set, allow, or deny.\u003C\u002Fp>\n\u003Cp>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.\u003C\u002Fp>\n\u003Cp>If opt-in is set using this filter, a category will only return true if the value of the visitor’s choice is “allow”.\u003C\u002Fp>\n\u003Cp>If the region based consent_type is opt-out, it will return true if the visitor’s choice is not set or is “allow”.\u003C\u002Fp>\n\u003Cp>Clientside, a consent management plugin can dynamically manipulate the consent type and set several cookie categories.\u003C\u002Fp>\n\u003Cp>A plugin can use a hook to listen for changes or check the value of a given category.\u003C\u002Fp>\n\u003Cp>Categories and most other stuff can be extended with a filter.\u003C\u002Fp>\n\u003Ch3>Existing integrations\u003C\u002Fh3>\n\u003Cp>Categorized, and sorted alphabetically\u003C\u002Fp>\n\u003Ch4>Example plugin\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frlankhorst\u002Fconsent-api-example-plugin\" rel=\"nofollow ugc\">Example plugin\u003C\u002Fa>. The plugin basically consists of a shortcode, with a div that shows a tracking or not tracking message. No actual tracking is done 🙂\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Consent Management Providers\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fsirdata-cmp\u002F\" rel=\"ugc\">Abconsent Sirdata CMP\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fbeautiful-and-responsive-cookie-consent\u002F\" rel=\"ugc\">Beautiful Cookie Consent Banner\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fclickio-consent\u002F\" rel=\"ugc\">Clickio Consent\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fcomplianz-gdpr\u002F\" rel=\"ugc\">Complianz GDPR\u002FCCPA\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fconsent.studio\u002F\" rel=\"nofollow ugc\">Consent Studio\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fconsent-manager\u002F\" rel=\"ugc\">consentmanager\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fconzent.net\u002F\" rel=\"nofollow ugc\">Conzent\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fcookiebot\u002F\" rel=\"ugc\">Cookiebot\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fcookiefirst-gdpr-cookie-consent-banner\u002F\" rel=\"ugc\">CookieFirst\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fcookiehub\u002F\" rel=\"ugc\">CookieHub\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fcookietractor\u002F\" rel=\"ugc\">CookieTractor\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fcookie-law-info\u002F\" rel=\"ugc\">CookieYes – Cookie Banner for Cookie Consent\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fgdpr-cookie-compliance\u002F\" rel=\"ugc\">GDPR Cookie Compliance\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.webtoffee.com\u002Fproduct\u002Fgdpr-cookie-consent\u002F\" rel=\"nofollow ugc\">GDPR Cookie Consent Plugin – CCPA Ready\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgetterms.io\u002Fconsent-manager\u002F\" rel=\"nofollow ugc\">GetTerms\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fiubenda-cookie-law-solution\u002F\" rel=\"ugc\">iubenda | All-in-one Compliance\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fpressidium-cookie-consent\u002F\" rel=\"ugc\">Pressidium Cookie Consent\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Ftrustarc-cookie-consent-manager\u002F\" rel=\"ugc\">TrustArc Cookie Consent Manager\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Consent Requiring Plugins\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fadd-to-any\u002F\" rel=\"ugc\">AddToAny\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.appfromlab.com\u002Fproduct\u002Fwoocommerce-utm-tracker-plugin\u002F\" rel=\"nofollow ugc\">AFL UTM Tracker Plugin\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fburst-statistics\u002F\" rel=\"ugc\">Burst Statistics\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fgoogle-site-kit\u002F\" rel=\"ugc\">Google Site Kit\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoocommerce-google-adwords-conversion-tracking-tag\u002F\" rel=\"ugc\">Pixel Manager for WooCommerce\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoocommerce\u002F\" rel=\"ugc\">Woo\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-statistics\u002F\" rel=\"ugc\">WP Statistics\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Demo site\u003C\u002Fh3>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwpconsentapi.org\u002F\" rel=\"nofollow ugc\">wpconsentapi.org\u003C\u002Fa>\u003Cbr \u002F>\nBelow are the plugins used to set up the demo site:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Complianz\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frlankhorst\u002Fconsent-api-example-plugin\" rel=\"nofollow ugc\">The example plugin\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>javascript, consent management plugin\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>\u002F\u002Fset consent type\nwindow.wp_consent_type = 'optin'\n\n\u002F\u002Fdispatch 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\nlet event = new CustomEvent('wp_consent_type_defined');\ndocument.dispatchEvent( event );\n\n\n\u002F\u002Fconsent management plugin sets cookie when consent category value changes\nwp_set_consent('marketing', 'allow');\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>javascript, tracking plugin\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>\u002F\u002Flisten to consent change event\ndocument.addEventListener(\"wp_listen_for_consent_change\", function (e) {\n  var changedConsentCategory = e.detail;\n  for (var key in changedConsentCategory) {\n    if (changedConsentCategory.hasOwnProperty(key)) {\n      if (key === 'marketing' && changedConsentCategory[key] === 'allow') {\n        console.log(\"just given consent, track user\")\n      }\n    }\n  }\n});\n\n\u002F\u002Fbasic implementation of consent check:\nif (wp_has_consent('marketing')){\n  activateMarketing();\n  console.log(\"set marketing stuff now!\");\n} else {\n  console.log(\"No marketing stuff please!\");\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>PHP\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>\u002F\u002Fdeclare compliance with consent level API\n$plugin = plugin_basename( __FILE__ );\nadd_filter( \"wp_consent_api_registered_{$plugin}\", '__return_true' );\n\n\u002F**\n* Example how a plugin can register cookies with the consent API\n * These cookies can then be shown on the front-end, to the user, with wp_get_cookie_info()\n *\u002F\n\nfunction my_wordpress_register_cookies(){\n    if ( function_exists( 'wp_add_cookie_info' ) ) {\n        wp_add_cookie_info( 'AMP_token', 'AMP', 'marketing', __( 'Session' ), __( 'Store a unique User ID.' ) );\n    }\n}\nadd_action('plugins_loaded', 'my_wordpress_register_cookies');\n\n\nif (wp_has_consent('marketing')){\n\u002F\u002Fdo marketing stuff\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Service-level consent\u003C\u002Fh4>\n\u003Cp>In addition to category-based consent, the API supports service-level consent control. This allows consent management plugins to grant or deny consent for specific services (like ‘google-analytics’ or ‘facebook-pixel’) independently from their category. When checking service consent with wp_has_service_consent(), the API first checks if explicit consent exists for that service. If no explicit consent is set, it falls back to the consent status of the service’s category. This enables fine-grained control: a user might accept statistics cookies in general, but explicitly deny a specific analytics service.\u003C\u002Fp>\n\u003Cp>Service consent can be checked and set both server-side (PHP) and client-side (JavaScript):\u003C\u002Fp>\n\u003Cp>PHP:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002F\u002Fcheck if a specific service has consent\nif ( wp_has_service_consent( 'google-analytics' ) ) {\n    \u002F\u002Factivate google analytics\n}\n\n\u002F\u002Fcheck if a service is explicitly denied\nif ( wp_is_service_denied( 'facebook-pixel' ) ) {\n    \u002F\u002Fservice was explicitly denied by user\n}\n\n\u002F\u002Fset service consent\nwp_set_service_consent( 'google-analytics', true ); \u002F\u002Fgrant consent\nwp_set_service_consent( 'facebook-pixel', false ); \u002F\u002Fdeny consent\n\n\u002F\u002Flisten for service consent changes\nadd_action( 'wp_consent_service_changed', function( $service, $consented ) {\n    error_log( \"Service {$service} consent changed to: \" . ( $consented ? 'granted' : 'denied' ) );\n}, 10, 2 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>JavaScript:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002F\u002Fcheck service consent\nif ( wp_has_service_consent( 'youtube' ) ) {\n    \u002F\u002Factivate tracking\n}\n\n\u002F\u002Fcheck if explicitly denied\nif ( wp_is_service_denied( 'facebook-pixel' ) ) {\n    \u002F\u002Fservice denied\n}\n\n\u002F\u002Fset service consent\nwp_set_service_consent( 'youtube', true );\n\n\u002F\u002Flisten for service consent changes\ndocument.addEventListener( 'wp_consent_api_status_change_service', function( e ) {\n    console.log( 'Service: ' + e.detail.service + ', consented: ' + e.detail.value );\n});\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Any code suggestions? We’re on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FWordPress\u002Fwp-consent-level-api\" rel=\"nofollow ugc\">GitHub\u003C\u002Fa> as well!\u003C\u002Fp>\n","Simple Consent API to read and register the current consent category.",200000,779186,100,"2026-03-12T09:27:00.000Z","6.9.4","5.0","7.4",[28,29,30,31,32],"api","compliance","consent","cookies","privacy","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-consent-api","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-consent-api.2.0.1.zip",0,null,"2026-03-15T15:16:48.613Z",{"slug":39,"name":40,"version":41,"author":5,"author_profile":6,"description":42,"short_description":43,"active_installs":44,"downloaded":45,"rating":35,"num_ratings":35,"last_updated":46,"tested_up_to":47,"requires_at_least":48,"requires_php":49,"tags":50,"homepage":55,"download_link":56,"security_score":57,"vuln_count":35,"unpatched_count":35,"last_vuln_date":36,"fetched_at":37},"definitions-internal-linkbuilding","Definitions – Internal Linkbuilding","1.0.2","\u003Cp>A lightweight SEO tool we use for internal linkbuilding in our knowledge base, but can be adapted to your needs. For every post you can assign a keyword that will be replaced on your website with an internal link and a tooltip with features image, if so desired.\u003C\u002Fp>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Auto-replace keywords with internal links. (Dynamically – not permanently)\u003C\u002Fli>\n\u003Cli>Calculates how many times a keyword exists in your post content.\u003C\u002Fli>\n\u003Cli>Only replaces one word per page.\u003C\u002Fli>\n\u003Cli>Does not replace in H1-6 elements. Only in post content.\u003C\u002Fli>\n\u003Cli>You can use a tooltip with or without featured image.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>How it works\u003C\u002Fh4>\n\u003Cp>For every post on your website you can designate a keyword. That keyword will than be auto-replaced in the content by a hoverable link with tooltip, if so desired.\u003C\u002Fp>\n\u003Ch4>Example\u003C\u002Fh4>\n\u003Cp>As a use case for Complianz.io; we have a custom post type “Definitions”, every definition explains a keyword in more detail. If we use “Cookie Policy” on our website, this word will be underlined as a tooltip and on hover will show a infobox with an internal link to this definition. \u003Ca href=\"https:\u002F\u002Fcomplianz.io\u002Fcustomizing-the-cookie-policy-templates\u002F\" rel=\"nofollow ugc\">Example\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch4>Support\u003C\u002Fh4>\n\u003Cp>Please leave a review and\u002For feature request so we can help each other! If you have any questions, please leave them at the support forum on wordpress.org.\u003C\u002Fp>\n\u003Cp>Check out other plugins developed by Really Simple Plugins as well: \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Freally-simple-ssl\u002F\" rel=\"ugc\">Really Simple SSL\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fcomplianz-gdpr\u002F\" rel=\"ugc\">Complianz\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Definitions is on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FReally-Simple-Plugins\u002Fdefinitions\u002F\" rel=\"nofollow ugc\">GitHub\u003C\u002Fa> as well!\u003C\u002Fp>\n\u003Ch4>Installation\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Go to “plugins” in your WordPress Dashboard, and click “add new”.\u003C\u002Fli>\n\u003Cli>Click “upload”, and select the downloaded zip file.\u003C\u002Fli>\n\u003Cli>Activate.\u003C\u002Fli>\n\u003Cli>In each post, you can now add a term to mark it as definition for that term.\u003C\u002Fli>\n\u003C\u002Ful>\n","Automatically replace your posts' keywords on your website with an internal link and tooltip.",20,2357,"2022-05-06T08:56:00.000Z","6.0.11","5.2","5.6",[51,52,53,54],"cool","hyperlinks","linkbuilding","tooltips","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fdefinitions-internal-linkbuilding","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fdefinitions-internal-linkbuilding.1.0.2.zip",85]