[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fPXch8WNwKBaed-wynE3uJyfP23on8GD-vHB4aP1Se_c":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":11,"num_ratings":13,"last_updated":14,"tested_up_to":15,"requires_at_least":16,"requires_php":17,"tags":18,"homepage":17,"download_link":23,"security_score":11,"vuln_count":24,"unpatched_count":24,"last_vuln_date":25,"fetched_at":26,"vulnerabilities":27,"developer":28,"crawl_stats":25,"alternatives":34,"analysis":142,"fingerprints":192},"traction-external-links-speed-bump","Traction External Links Speed Bump","1.9.8","Traction","https:\u002F\u002Fprofiles.wordpress.org\u002Ftractionokc\u002F","\u003Cp>Some websites for compliance reasons or just because they want to need to provide the user with a notice when a link is clicked that is not in that websites control. Traction External Links Speed Bump is a simple no frills plugin that provides a basic speed bump overlay when a link is clicked on a site that doesn’t match the site host’s domain name.\u003C\u002Fp>\n\u003Cp>The plugin offers the following customization options:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Omitted Domains – Enter a comma separated list of domain names that you don’t want to trigger the speed bump.\u003C\u002Fli>\n\u003Cli>Omitted Links – Enter a comma separated list of links that you don’t want to trigger the speed bump.\u003C\u002Fli>\n\u003Cli>Customize Text – Customize the speed bump text as well as the continue and cancel button text.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Read the FAQ for information on how to customize the CSS used in this plugin.\u003C\u002Fp>\n","Activates a speed bump on all external links and gives site owner the ability to enter a list of domains or specific links that when clicked will not  &hellip;",100,4171,4,"2025-07-07T16:59:00.000Z","6.8.5","3.0.1","",[19,20,21,22],"compliance","external-links","speed-bump","traction","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftraction-external-links-speed-bump.zip",0,null,"2026-03-15T15:16:48.613Z",[],{"slug":29,"display_name":7,"profile_url":8,"plugin_count":30,"total_installs":11,"avg_security_score":11,"avg_patch_time_days":31,"trust_score":32,"computed_at":33},"tractionokc",1,30,94,"2026-04-04T15:47:08.250Z",[35,57,82,104,122],{"slug":36,"name":37,"version":38,"author":39,"author_profile":40,"description":41,"short_description":42,"active_installs":43,"downloaded":44,"rating":11,"num_ratings":45,"last_updated":46,"tested_up_to":47,"requires_at_least":48,"requires_php":49,"tags":50,"homepage":55,"download_link":56,"security_score":11,"vuln_count":24,"unpatched_count":24,"last_vuln_date":25,"fetched_at":26},"wp-consent-api","WP Consent API","2.0.1","Rogier Lankhorst","https:\u002F\u002Fprofiles.wordpress.org\u002Frogierlankhorst\u002F","\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,2,"2026-03-12T09:27:00.000Z","6.9.4","5.0","7.4",[51,19,52,53,54],"api","consent","cookies","privacy","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-consent-api","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-consent-api.2.0.1.zip",{"slug":58,"name":59,"version":60,"author":61,"author_profile":62,"description":63,"short_description":64,"active_installs":65,"downloaded":66,"rating":67,"num_ratings":68,"last_updated":69,"tested_up_to":47,"requires_at_least":70,"requires_php":71,"tags":72,"homepage":77,"download_link":78,"security_score":79,"vuln_count":80,"unpatched_count":24,"last_vuln_date":81,"fetched_at":26},"wp-external-links","External Links – nofollow, noopener & new window","2.63","WebFactory","https:\u002F\u002Fprofiles.wordpress.org\u002Fwebfactory\u002F","\u003Cp>\u003Cstrong>Manage all external & internal links on your site\u003C\u002Fstrong>. Control icons, nofollow, noopener, ugc (User Generated Content), sponsored and if links open in new window or new tab.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgetwplinks.com\u002F\" rel=\"nofollow ugc\">WP Links\u003C\u002Fa> plugin was completely rebuilt in v2 and has lots of new features, like noopener, ugc and sponsored values for rel; font icons, internal links options and full WPMU support.\u003C\u002Fp>\n\u003Ch4>Link Scanner – PRO feature\u003C\u002Fh4>\n\u003Cp>Check every single link on your site! See if it’s broken or not, if it’s redirected, what’s the target and rel attribute and what page exactly it’s linking to. This feature is a part of the \u003Ca href=\"https:\u002F\u002Fgetwplinks.com\u002F\" rel=\"nofollow ugc\">WP Links PRO\u003C\u002Fa> plugin.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Manage external and internal links\u003C\u002Fli>\n\u003Cli>Open links in new window or tab\u003C\u002Fli>\n\u003Cli>Add follow or nofollow (for SEO)\u003C\u002Fli>\n\u003Cli>Add noopener and noreferrer (for security)\u003C\u002Fli>\n\u003Cli>Add ugc (User Generated Content) and sponsored values to rel (\u003Ca href=\"https:\u002F\u002Fwebmasters.googleblog.com\u002F2019\u002F09\u002Fevolving-nofollow-new-ways-to-identify.html\" rel=\"nofollow ugc\">Google announcement\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>Add link icons (FontAwesome and Dashicons)\u003C\u002Fli>\n\u003Cli>Set other attributes like title and CSS classes\u003C\u002Fli>\n\u003Cli>Scan complete page (or just posts, comments, widgets)\u003C\u002Fli>\n\u003Cli>SEO friendly\u003C\u002Fli>\n\u003Cli>Link Scanner – check all links on your site – PRO feature\u003C\u002Fli>\n\u003Cli>Exit Confirmation – protect visitors and traffic when external links are clicked – PRO feature\u003C\u002Fli>\n\u003Cli>Link Rules – create advanced link rules for chosen link groups – PRO feature\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>And more…\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Network Settings (WPMU support)\u003C\u002Fli>\n\u003Cli>Use template tag to apply plugin settings on specific contents\u003C\u002Fli>\n\u003Cli>Set data-attribute to change how individual links will be treated\u003C\u002Fli>\n\u003Cli>Use built-in actions and filters to implement your specific needs\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Easy to use\u003C\u002Fh4>\n\u003Cp>After activating you can set all options for external and internal links on the plugins admin page.\u003C\u002Fp>\n\u003Ch4>On the fly\u003C\u002Fh4>\n\u003Cp>The plugin filters the output and changes the links on the fly. The real contents (posts, pages, widget etcetera) will not be changed in the database.\u003Cbr \u002F>\nWhen deactivating the plugin, all contents will be the same as it was before.\u003C\u002Fp>\n\u003Ch4>GDPR compatibility\u003C\u002Fh4>\n\u003Cp>We are not lawyers. Please do not take any of the following as legal advice.\u003Cbr \u002F>\nWP External Links does not track, collect or process any user data. Nothing is logged or pushed to any 3rd parties. We also don’t use any 3rd party services or CDNs. Based on that, we feel it’s GDPR compatible, but again, please, don’t take this as legal advice.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Like the plugin?\u003C\u002Fstrong> \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fview\u002Fplugin-reviews\u002Fwp-external-links\" rel=\"ugc\">Rate it\u003C\u002Fa> to support the development.\u003C\u002Fp>\n\u003Cp>If you’re having \u003Cstrong>problems with SSL or HTTPS\u003C\u002Fstrong> try our free \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-force-ssl\u002F\" rel=\"ugc\">WP Force SSL\u003C\u002Fa> plugin. It’s a great way to enable SSL and fix SSL problems.\u003C\u002Fp>\n\u003Ch3>Documentation\u003C\u002Fh3>\n\u003Cp>After activating you can set all options for external and internal links.\u003C\u002Fp>\n\u003Ch4>Data attribute “data-wpel-link”\u003C\u002Fh4>\n\u003Cp>Links being processed by this plugin will also contain the data-attribute \u003Ccode>data-wpel-link\u003C\u002Fcode>.\u003Cbr \u002F>\nThe plugin could set the value to \u003Ccode>external\u003C\u002Fcode>, \u003Ccode>internal\u003C\u002Fcode> or \u003Ccode>exclude\u003C\u002Fcode>, meaning how the\u003Cbr \u002F>\nlink was processed.\u003C\u002Fp>\n\u003Cp>You can also set the data-attribute yourself. This way you can force how the plugin will process\u003Cbr \u002F>\ncertain links.\u003C\u002Fp>\n\u003Cp>When you add the value \u003Ccode>ignore\u003C\u002Fcode>, the link will be completely ignored by the plugin:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003Ca href=\"http:\u002F\u002Fsomedomain.com\" data-wpel-link=\"ignore\">Go to somedomain\u003C\u002Fa>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Action “wpel_link”\u003C\u002Fh4>\n\u003Cp>Use this action to change the link object after all plugin settings have been applied.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_action( 'wpel_link', ( $link_object ) {\n    if ( $link_object->is_external() ) {\n        \u002F\u002F get current url\n        $url = $link_object->getAttribute( 'href' );\n\n        \u002F\u002F set redirect url\n        $redirect_url = '\u002F\u002Fsomedom.com?url='. urlencode( $url );\n        $link_object->setAttribute( 'href', $redirect_url );\n    }\n}, 10, 1 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>The link object is an instance of \u003Ccode>WPEL_Link\u003C\u002Fcode> class.\u003C\u002Fp>\n\u003Ch4>Action hook “wpel_before_apply_link”\u003C\u002Fh4>\n\u003Cp>Use this action to change the link object before the plugin settings will be applied on the link.\u003Cbr \u002F>\nYou can use this filter f.e. to ignore individual links from being processed. Or change dynamically how\u003Cbr \u002F>\nthey will be treated by this plugin.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_action( 'wpel_before_apply_link', function ( $link ) {\n    \u002F\u002F ignore links with class \"some-cls\"\n    if ( $link->has_attr_value( 'class', 'some-cls' ) ) {\n        $link->set_ignore();\n    }\n\n    \u002F\u002F mark and treat links with class \"ext-cls\" as external link\n    if ( $link->has_attr_value( 'class', 'ext-cls' ) ) {\n        $link->set_external();\n    }\n}, 10 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Filter hook “wpel_apply_settings”\u003C\u002Fh4>\n\u003Cp>When filter returns false the plugin settings will not be applied. Can be used when f.e. certain posts or pages should be ignored by this plugin.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'wpel_apply_settings', '__return_false' );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>See \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-external-links\u002Ffaq\u002F\" rel=\"ugc\">FAQ\u003C\u002Fa> for more info.\u003C\u002Fp>\n","Internal links & external links manager: open in new window or tab, control nofollow, ugc, sponsored & noopener. SEO friendly.",90000,1641157,86,247,"2025-12-03T19:28:00.000Z","4.2","7.2",[20,73,74,75,76],"new-tab","new-window","nofollow","noopener","https:\u002F\u002Fgetwplinks.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-external-links.2.63.zip",99,3,"2023-03-08 00:00:00",{"slug":83,"name":84,"version":85,"author":86,"author_profile":87,"description":88,"short_description":89,"active_installs":90,"downloaded":91,"rating":92,"num_ratings":93,"last_updated":94,"tested_up_to":47,"requires_at_least":95,"requires_php":17,"tags":96,"homepage":102,"download_link":103,"security_score":11,"vuln_count":24,"unpatched_count":24,"last_vuln_date":25,"fetched_at":26},"userway-accessibility-widget","Accessibility by UserWay","2.6.6","UserWay","https:\u002F\u002Fprofiles.wordpress.org\u002Fuserwayorg\u002F","\u003Cp>Web accessibility can seem complex and overwhelming if you don’t know where to start.\u003C\u002Fp>\n\u003Cp>Let us make it easier, and, to coin a phrase, more accessible for everyone. UserWay’s Accessibility Widget creates a simpler and more accessible browsing experience for your users while increasing compliance with WCAG 2.1, ATAG 2.0, European EN 301 549, ADA, & Section 508 requirements.\u003C\u002Fp>\n\u003Cp>UserWay’s Accessibility Widget will strengthen any weak areas that could cause accessibility issues on your site. We are proud to say that a significant number of websites are more accessible today thanks to UserWay.\u003C\u002Fp>\n\u003Cp>UserWay’s Accessibility Widget makes smart modifications to elements on your site that are identified as being non-compliant, that may prevent keyboard-only navigation, or are in violation of ADA regulations.\u003C\u002Fp>\n\u003Cp>Install UserWay’s Accessibility Widget today.\u003Cbr \u002F>\nAfter installing UserWay’s Accessibility Widget, you will receive login instructions to the widget via email.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>ADA & WCAG 2.1 Compliance\u003C\u002Fstrong>\u003Cbr \u002F>\nUserWay’s best-in-class accessibility solutions move your site towards ADA and WCAG 2.1 compliance.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Shield Against Lawsuits\u003C\u002Fstrong>\u003Cbr \u002F>\nIncreasing your accessibility provides real, sustainable improvement for all users, and protects you from accessibility-related lawsuits.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Improve SEO, Boost Traffic\u003C\u002Fstrong>\u003Cbr \u002F>\nMake your commitment clear: a more inclusive site for everyone expands your demographic and boosts your SEO.\u003C\u002Fp>\n","UserWay’s Accessibility Widget creates a simpler and more accessible browsing experience for your users.",80000,917619,80,56,"2025-12-08T10:38:00.000Z","4.7",[97,98,99,100,101],"accessibility","ada","eaa-compliance","section-508","wcag","https:\u002F\u002Fuserway.org","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fuserway-accessibility-widget.2.6.6.zip",{"slug":105,"name":106,"version":107,"author":61,"author_profile":62,"description":108,"short_description":109,"active_installs":110,"downloaded":111,"rating":112,"num_ratings":113,"last_updated":69,"tested_up_to":47,"requires_at_least":114,"requires_php":115,"tags":116,"homepage":119,"download_link":120,"security_score":79,"vuln_count":45,"unpatched_count":24,"last_vuln_date":121,"fetched_at":26},"open-external-links-in-a-new-window","External Links in New Window \u002F New Tab","1.45","\u003Cp>Opens external links in a new tab or a or new window. You can set URLs that should either be forced to open in a new window or ignored.\u003C\u002Fp>\n\u003Cp>The plugin produces XHTML Strict compliant code and is search engine optimized (SEO).\u003Cbr \u002F>\nThis is done using JavaScript’s \u003Ccode>window.open()\u003C\u002Fcode>-function. It adds only a few lines of vanilla JavaScript to the page, and does not require any external libraries like jQuery.\u003C\u002Fp>\n\u003Cp>Most other plugins perform a hack by altering the \u003Ccode>target\u003C\u002Fcode> parameter (i.e. \u003Ccode>\u003Ca href=\"http:\u002F\u002Fsomewhere.example\" target=\"_blank\">\u003C\u002Fcode>). That method is not XHTML Strict compliant.\u003Cbr \u002F>\nThis plugin handles the links client-side, which lets search engines follow the links properly. Also, if a browser does not support JavaScript, the plugin is simply inactive, and does not result in any errors.\u003C\u002Fp>\n\u003Cp>If you need a more advanced plugin, with more options try our \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-external-links\u002F\" rel=\"ugc\">free WP External Links\u003C\u002Fa> plugin.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Credits\u003C\u002Fstrong>\u003Cbr \u002F>\nInspired by the \u003Ca href=\"http:\u002F\u002Fwww.zappelfillip.de\u002F2005-12-05\u002Fzap_newwindow\u002F\" rel=\"nofollow ugc\">Zap_NewWindow\u003C\u002Fa> plugin by \u003Ca href=\"http:\u002F\u002Fwww.zappelfillip.de\u002F\" title=\"His website is mostly in German\" rel=\"nofollow ugc\">Tom K&ouml;hler\u003C\u002Fa>.\u003Cbr \u002F>\nThe banner is a \u003Ca href=\"http:\u002F\u002Fwww.flickr.com\u002Fphotos\u002Fmonja\u002F1367946568\u002Fin\u002Fphotostream\u002F\" rel=\"nofollow ugc\">photo\u003C\u002Fa> by \u003Ca href=\"http:\u002F\u002Fwww.monja.it\u002F\" rel=\"nofollow ugc\">Monja Da Riva\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Translations\u003C\u002Fstrong>\u003Cbr \u002F>\nDanish by \u003Ca href=\"https:\u002F\u002Fkristianrisagerlarsen.dk\" rel=\"nofollow ugc\">Kristian Risager Larsen\u003C\u002Fa>\u003Cbr \u002F>\nDutch by \u003Ca href=\"http:\u002F\u002Fwww.collectief-it.nl\u002F\" rel=\"nofollow ugc\">Paul Staring\u003C\u002Fa>\u003Cbr \u002F>\nLithuanian by \u003Ca href=\"http:\u002F\u002FHost1Free.com\" rel=\"nofollow ugc\">Vincent G\u003C\u002Fa>\u003Cbr \u002F>\nOther translations will be appreciated!\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Known bugs\u003C\u002Fstrong>\u003Cbr \u002F>\nThe plugin conflicts with other plugins that change the links’ `onClick´ attribute.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Original developer\u003C\u002Fstrong>\u003Cbr \u002F>\nKristian Risager Larsen – \u003Ca href=\"http:\u002F\u002Fkezze.dk\" rel=\"nofollow ugc\">kezze.dk\u003C\u002Fa>\u003C\u002Fp>\n","Open external links in a new window or new tab. SEO optimized and XHTML Strict compliant.",30000,488005,90,77,"4.0","5.2",[20,117,73,74,118],"links","target-blank","https:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Fopen-external-links-in-a-new-window\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fopen-external-links-in-a-new-window.1.45.zip","2022-05-09 00:00:00",{"slug":123,"name":124,"version":125,"author":126,"author_profile":127,"description":128,"short_description":129,"active_installs":130,"downloaded":131,"rating":132,"num_ratings":133,"last_updated":134,"tested_up_to":15,"requires_at_least":135,"requires_php":17,"tags":136,"homepage":139,"download_link":140,"security_score":79,"vuln_count":45,"unpatched_count":24,"last_vuln_date":141,"fetched_at":26},"cookie-bar","Cookie Bar","2.2","Brontobytes","https:\u002F\u002Fprofiles.wordpress.org\u002Fbrontobytes\u002F","\u003Cp>A simple, lightweight WordPress plugin for displaying a discreet notification bar that is dismissable and the dismissal is saved by cookie. Perfect for implementing the EU cookie law (GDPR)!\u003C\u002Fp>\n\u003Cp>\u003Cstrong>The Cookie Bar plugin creates a small bar at the bottom of the website with a short customizable message about cookies and an accept button.\u003C\u002Fstrong> Once a visitor has accepted the Cookie Bar, it then disappears.\u003C\u002Fp>\n\u003Cp>Feel free to try out the plugin through our installation of \u003Ca href=\"https:\u002F\u002Fwww.brontobytes.com\u002Fblog\u002Fcookie-bar-free-wordpress-plugin\u002F\" rel=\"nofollow ugc\">Cookie Bar\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Troubleshooting: If you or your visitors are using an adblocker that can block cookie bars, the bar may not show up. Whitelist your website in your adblocker’s browser add-on\u002Fextension.\u003C\u002Fp>\n","Cookie Bar allows you to discreetly inform visitors that your website uses cookies.",10000,170028,98,22,"2025-10-29T18:54:00.000Z","3.8",[52,137,123,138,53],"cookie","cookie-compliance","https:\u002F\u002Fwww.brontobytes.com\u002Fblog\u002Fcookie-bar-free-wordpress-plugin\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcookie-bar.2.2.zip","2023-10-24 00:00:00",{"attackSurface":143,"codeSignals":159,"taintFlows":184,"riskAssessment":185,"analyzedAt":191},{"hooks":144,"ajaxHandlers":155,"restRoutes":156,"shortcodes":157,"cronEvents":158,"entryPointCount":24,"unprotectedCount":24},[145,151],{"type":146,"name":147,"callback":148,"file":149,"line":150},"action","admin_menu","trelsb_menu","traction-external-links-speed-bump.php",48,{"type":146,"name":152,"callback":153,"file":149,"line":154},"wp_enqueue_scripts","trelsb_add_scripts",250,[],[],[],[],{"dangerousFunctions":160,"sqlUsage":161,"outputEscaping":163,"fileOperations":24,"externalRequests":24,"nonceChecks":30,"capabilityChecks":30,"bundledLibraries":183},[],{"prepared":24,"raw":24,"locations":162},[],{"escaped":164,"rawEcho":165,"locations":166},6,10,[167,171,172,173,174,176,177,179,180,182],{"file":168,"line":169,"context":170},"inc\\options-page-wrapper.php",20,"raw output",{"file":168,"line":169,"context":170},{"file":168,"line":31,"context":170},{"file":168,"line":31,"context":170},{"file":168,"line":175,"context":170},46,{"file":168,"line":175,"context":170},{"file":168,"line":178,"context":170},55,{"file":168,"line":178,"context":170},{"file":168,"line":181,"context":170},64,{"file":168,"line":181,"context":170},[],[],{"summary":186,"deductions":187},"The security posture of the \"traction-external-links-speed-bump\" v1.9.8 plugin appears to be generally strong based on the provided static analysis.  There are no identified AJAX handlers, REST API routes, shortcodes, or cron events, significantly limiting the potential attack surface. The code also demonstrates good practices by using prepared statements for all SQL queries, having no file operations or external HTTP requests, and including nonce and capability checks.  However, a significant concern arises from the low percentage of properly escaped output (38%). This suggests that a substantial portion of user-supplied data, if processed by the plugin and then displayed, could be vulnerable to Cross-Site Scripting (XSS) attacks.  Despite the absence of known CVEs and a clean vulnerability history, the output escaping deficiency represents a tangible risk that could be exploited. The lack of taint analysis results is noted, but it doesn't negate the direct evidence of insufficient output sanitization.",[188],{"reason":189,"points":190},"Low percentage of properly escaped output",12,"2026-03-16T20:55:47.784Z",{"wat":193,"direct":202},{"assetPaths":194,"generatorPatterns":196,"scriptPaths":197,"versionParams":199},[195],"\u002Fwp-content\u002Fplugins\u002Ftraction-external-links-speed-bump\u002Fcss\u002Ftraction-external-links-speed-bump.css",[],[198],"\u002Fwp-content\u002Fplugins\u002Ftraction-external-links-speed-bump\u002Fjs\u002Ftraction-external-links-speed-bump.js",[200,201],"traction-external-links-speed-bump\u002Fcss\u002Ftraction-external-links-speed-bump.css?ver=","traction-external-links-speed-bump\u002Fjs\u002Ftraction-external-links-speed-bump.js?ver=",{"cssClasses":203,"htmlComments":204,"htmlAttributes":205,"restEndpoints":206,"jsGlobals":207,"shortcodeOutput":209},[],[],[],[],[208],"trelsb_php_vars",[]]