{"id":324714,"date":"2026-06-14T13:06:48","date_gmt":"2026-06-14T13:06:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/erdo-cra-compliance\/"},"modified":"2026-06-14T13:06:25","modified_gmt":"2026-06-14T13:06:25","slug":"erdo-cra-compliance","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/erdo-cra-compliance\/","author":23436214,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"Erdo CRA Compliance","header_author":"Erdinc Bulat","header_description":"EU Cyber Resilience Act (CRA), GDPR, and NIS2 compliance panel for WordPress. Scans installed plugins for CRA readiness, generates VDP policies, SBOM, security.txt, and PDF compliance reports.","assets_banners_color":"7f96b3","last_updated":"2026-06-14 13:06:25","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":36,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"erdincbulat","date":"2026-06-14 13:06:25"}},"upgrade_notice":{"1.0.0":"<p>Initial release. No upgrade steps required.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3571912,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3571912,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3571912,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3571912,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3571912,"resolution":"1","location":"assets","locale":"","width":1918,"height":880},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3571912,"resolution":"2","location":"assets","locale":"","width":1918,"height":881},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3571912,"resolution":"3","location":"assets","locale":"","width":1918,"height":876},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3571912,"resolution":"4","location":"assets","locale":"","width":1918,"height":875}},"screenshots":{"1":"Main compliance dashboard with score ring and per-framework risk cards.","2":"Scan results table with filter tabs for CRA, GDPR, and NIS2 findings.","3":"Developer Tools \u2014 VDP, SBOM, security.txt, and Conformity Declaration generators.","4":"PDF compliance report download."}},"plugin_section":[],"plugin_tags":[14361,267089,131785,267090,600],"plugin_category":[54],"plugin_contributors":[253916],"plugin_business_model":[],"class_list":["post-324714","plugin","type-plugin","status-publish","hentry","plugin_tags-compliance","plugin_tags-cra","plugin_tags-gdpr","plugin_tags-nis2","plugin_tags-security","plugin_category-security-and-spam-protection","plugin_contributors-erdincbulat","plugin_committers-erdincbulat"],"banners":{"banner":"https:\/\/ps.w.org\/erdo-cra-compliance\/assets\/banner-772x250.png?rev=3571912","banner_2x":"https:\/\/ps.w.org\/erdo-cra-compliance\/assets\/banner-1544x500.png?rev=3571912","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/erdo-cra-compliance\/assets\/icon-128x128.png?rev=3571912","icon_2x":"https:\/\/ps.w.org\/erdo-cra-compliance\/assets\/icon-256x256.png?rev=3571912","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/erdo-cra-compliance\/assets\/screenshot-1.png?rev=3571912","caption":"Main compliance dashboard with score ring and per-framework risk cards."},{"src":"https:\/\/ps.w.org\/erdo-cra-compliance\/assets\/screenshot-2.png?rev=3571912","caption":"Scan results table with filter tabs for CRA, GDPR, and NIS2 findings."},{"src":"https:\/\/ps.w.org\/erdo-cra-compliance\/assets\/screenshot-3.png?rev=3571912","caption":"Developer Tools \u2014 VDP, SBOM, security.txt, and Conformity Declaration generators."},{"src":"https:\/\/ps.w.org\/erdo-cra-compliance\/assets\/screenshot-4.png?rev=3571912","caption":"PDF compliance report download."}],"raw_content":"<!--section=description-->\n<p><strong>Erdo CRA Compliance<\/strong> helps WordPress site owners and plugin developers prepare for EU regulatory deadlines \u2014 the CRA Vulnerability Disclosure Policy obligation (September 11, 2026) and full CRA compliance (December 11, 2027).<\/p>\n\n<h4>What it does<\/h4>\n\n<ul>\n<li><strong>Plugin Risk Scanner<\/strong> \u2014 Scans all active plugins against CRA readiness criteria: last updated, WordPress version lag, PHP requirements, support health, and closed\/removed plugin detection.<\/li>\n<li><strong>GDPR Scanner<\/strong> \u2014 Detects third-party scripts, external resource connections, and data-handling risk signals on your site.<\/li>\n<li><strong>NIS2 Scanner<\/strong> \u2014 Checks site-level security posture against NIS2 Article 21 requirements: HTTPS, MFA, backups, WAF, activity logging, and auto-updates.<\/li>\n<li><strong>Compliance Dashboard<\/strong> \u2014 Visual score ring, per-framework risk counts, and actionable guidance in one screen.<\/li>\n<li><strong>PDF Compliance Report<\/strong> \u2014 Download a formatted PDF report covering all scan results, executive summary, and prioritised recommendations.<\/li>\n<li><strong>VDP Generator<\/strong> \u2014 Generate a ready-to-publish Vulnerability Disclosure Policy document pre-filled with your site details.<\/li>\n<li><strong>SBOM Generator<\/strong> \u2014 Create a CycloneDX 1.4 JSON Software Bill of Materials covering WordPress core, active plugins, and active theme.<\/li>\n<li><strong>security.txt<\/strong> \u2014 Automatically serve an RFC 9116-compliant <code>\/.well-known\/security.txt<\/code> on your site.<\/li>\n<li><strong>Conformity Declaration Template<\/strong> \u2014 A structured self-assessment checklist covering CRA Articles 10\/11\/14, GDPR Articles 25\/32\/30, and NIS2 Articles 21\/23.<\/li>\n<\/ul>\n\n<h4>CRA Deadlines<\/h4>\n\n<ul>\n<li><strong>September 11, 2026<\/strong> \u2014 Vulnerability Disclosure Policy (VDP) obligation begins. This plugin generates and serves your VDP automatically.<\/li>\n<li><strong>December 11, 2027<\/strong> \u2014 Full CRA compliance + CE marking required. Penalties up to 15M EUR or 2.5% of global turnover.<\/li>\n<\/ul>\n\n<h4>Legal Disclaimer<\/h4>\n\n<p>This plugin provides automated analysis tools and document templates to assist with EU regulatory preparation. It does <strong>not<\/strong> constitute legal advice and does <strong>not<\/strong> guarantee regulatory compliance with the CRA, GDPR, NIS2, or any other regulation. All assessments, scores, and generated documents (VDP, SBOM, security.txt, Conformity Declaration) are starting points and templates only. Consult a qualified legal or compliance professional before relying on any output for regulatory purposes.<\/p>\n\n<h4>External Services<\/h4>\n\n<p>This plugin connects to the following third-party services. Each is documented below with what it is used for, what data is sent, when, and links to the relevant terms and privacy policy.<\/p>\n\n<p><strong>WordPress.org Plugins API<\/strong><\/p>\n\n<p>This plugin makes HTTP requests to the WordPress.org Plugins API (<code>api.wordpress.org\/plugins\/info\/<\/code>) to retrieve metadata for installed plugins (last updated, tested WordPress version, PHP requirements, active installs). This request is made only during a manual or scheduled scan. No user data is sent \u2014 only plugin slugs are included in the request. Responses are cached for 12 hours per plugin using WordPress transients to minimise API requests. See the <a href=\"https:\/\/wordpress.org\/about\/privacy\/\">WordPress.org privacy policy<\/a>.<\/p>\n\n<p><strong>Patchstack Vulnerability Database (optional)<\/strong><\/p>\n\n<p>This plugin can optionally connect to the Patchstack vulnerability database (<code>patchstack.com\/database\/api\/v2<\/code>) to check installed plugins against known security vulnerabilities (CVEs). This connection is opt-in and disabled by default \u2014 it is only made if the site owner enters their own Patchstack API key on the plugin's Settings page.<\/p>\n\n<p>When enabled, the plugin sends the configured API key (for authentication) and the slugs\/versions of installed plugins (to look up known vulnerabilities) during a manual or scheduled scan. Vulnerability responses are cached for 6 hours using WordPress transients. No personal or visitor data is sent. This service is provided by Patchstack O\u00dc: <a href=\"https:\/\/patchstack.com\/terms-and-conditions\/\">Terms of Service<\/a>, <a href=\"https:\/\/patchstack.com\/privacy-policy\/\">Privacy Policy<\/a>.<\/p>\n\n<p><strong>GDPR Scanner \u2014 third-party script detection<\/strong><\/p>\n\n<p>The GDPR scanner module includes a list of known third-party script domains (e.g. Google Analytics, Facebook Pixel, Intercom, HubSpot) used to detect whether <em>your site<\/em> is loading scripts from these services. This is a local pattern match against script URLs already enqueued on your own site \u2014 the plugin itself does not contact, query, or send any data to these third-party services.<\/p>\n\n<h4>Privacy<\/h4>\n\n<p>This plugin does not collect, store, or transmit any personal data to external services beyond the requests described above.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>erdo-cra-compliance<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Navigate to <strong>CRA Compliance<\/strong> in the WordPress admin sidebar.<\/li>\n<li>Click <strong>Run Scan<\/strong> to perform your first compliance scan.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20guarantee%20eu%20compliance%3F\"><h3>Does this plugin guarantee EU compliance?<\/h3><\/dt>\n<dd><p>No. This plugin provides automated analysis and document templates to help you assess and document your compliance posture. All assessments and generated documents should be reviewed by a qualified legal or compliance professional before regulatory use.<\/p><\/dd>\n<dt id=\"what%20is%20the%20eu%20cyber%20resilience%20act%3F\"><h3>What is the EU Cyber Resilience Act?<\/h3><\/dt>\n<dd><p>The CRA is an EU regulation requiring manufacturers of \"products with digital elements\" (including software) to meet cybersecurity requirements throughout the product lifecycle \u2014 including vulnerability disclosure, security updates, and SBOM documentation.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20work%20with%20multisite%3F\"><h3>Does the plugin work with multisite?<\/h3><\/dt>\n<dd><p>The plugin is designed for single-site installations. Multisite support is not included in this version.<\/p><\/dd>\n<dt id=\"what%20does%20the%20compliance%20score%20mean%3F\"><h3>What does the compliance score mean?<\/h3><\/dt>\n<dd><p>The score (0\u2013100) is calculated as: 100 minus 10 points per HIGH risk finding and 5 points per MEDIUM risk finding, floored at 0. It is an indicative benchmark, not a regulatory certification.<\/p><\/dd>\n<dt id=\"why%20is%20a%20plugin%20showing%20high%20risk%3F\"><h3>Why is a plugin showing HIGH risk?<\/h3><\/dt>\n<dd><p>Common reasons: not updated for over 2 years, tested on a WordPress version 2+ major releases behind current, requires an end-of-life PHP version, or has been removed from WordPress.org.<\/p><\/dd>\n<dt id=\"how%20are%20third-party%20scripts%20detected%20for%20gdpr%3F\"><h3>How are third-party scripts detected for GDPR?<\/h3><\/dt>\n<dd><p>The plugin captures enqueued script sources on frontend page loads and stores them temporarily. This allows the GDPR scanner to identify external domains even when running in the admin context.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>CRA plugin scanner with risk scoring (last updated, WP lag, PHP requirements, support health, closed plugin detection).<\/li>\n<li>GDPR third-party script scanner with frontend capture via wp_footer hook.<\/li>\n<li>NIS2 Article 21 scanner (HTTPS, MFA, backup, WAF, activity log, auto-updates).<\/li>\n<li>Compliance dashboard with animated SVG score ring.<\/li>\n<li>PDF report generation (FPDF, 5-section report).<\/li>\n<li>VDP policy generator.<\/li>\n<li>CycloneDX 1.4 SBOM generator.<\/li>\n<li>RFC 9116 security.txt (auto-served at \/.well-known\/security.txt).<\/li>\n<li>Conformity Declaration template.<\/li>\n<li>REST API endpoint: GET \/wp-json\/erdo-craguard\/v1\/sbom.<\/li>\n<li>Daily and weekly wp_cron scan schedules.<\/li>\n<\/ul>","raw_excerpt":"EU Cyber Resilience Act, GDPR, and NIS2 compliance dashboard for WordPress. Scan plugins, generate SBOM, VDP, and PDF compliance reports.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/324714","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=324714"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/erdincbulat"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=324714"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=324714"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=324714"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=324714"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=324714"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=324714"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}