{"id":351384,"date":"2026-08-26T07:37:17","date_gmt":"2026-08-26T07:37:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/site-check-accessibility\/"},"modified":"2026-08-26T07:37:03","modified_gmt":"2026-08-26T07:37:03","slug":"site-check-accessibility","status":"publish","type":"plugin","link":"https:\/\/en-au.wordpress.org\/plugins\/site-check-accessibility\/","author":23545865,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.1","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Site-Check Accessibility","header_author":"site-works AG","header_description":"Applies accessibility fixes reviewed in the Site-Check web app directly to your WordPress site \u2014 server-side, no manual code edits, fully reversible.","assets_banners_color":"123261","last_updated":"2026-08-26 07:37:03","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/site-check.de","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":50,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"sitecheck","date":"2026-08-26 07:37:03"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3666444,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3666444,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3666444,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3666444,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[1447,1953,240916,1956],"plugin_category":[34],"plugin_contributors":[277530],"plugin_business_model":[],"class_list":["post-351384","plugin","type-plugin","status-publish","hentry","plugin_tags-a11y","plugin_tags-accessibility","plugin_tags-bfsg","plugin_tags-wcag","plugin_category-accessibility","plugin_contributors-sitecheck","plugin_committers-sitecheck"],"banners":{"banner":"https:\/\/ps.w.org\/site-check-accessibility\/assets\/banner-772x250.png?rev=3666444","banner_2x":"https:\/\/ps.w.org\/site-check-accessibility\/assets\/banner-1544x500.png?rev=3666444","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/site-check-accessibility\/assets\/icon-128x128.png?rev=3666444","icon_2x":"https:\/\/ps.w.org\/site-check-accessibility\/assets\/icon-256x256.png?rev=3666444","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Requires a Site-Check account and an active subscription.<\/strong> This plugin is the\nconnector (client) for Site-Check, a hosted, paid accessibility service; the\nscanning and fix-computation run externally on Site-Check's servers, not inside\nWordPress. See \"External services\" below.<\/p>\n\n<p>Site-Check Accessibility connects your WordPress site to the <strong>Site-Check<\/strong>\naccessibility web app. Fixes that you review and approve in the app are applied\ndirectly to your live pages \u2014 no manual CSS or markup editing.<\/p>\n\n<p>Approved fixes are written <strong>server-side, straight into the delivered HTML<\/strong>;\nonly elements created later by your site's own JavaScript fall back to a small\nclient-side script. Every change is traceable and reversible, and is delivered\nonly while an active connection <strong>and<\/strong> a valid subscription exist \u2014 disconnect\nthe site or end the subscription and the fixes are removed automatically on the\nnext page load.<\/p>\n\n<p>Features:<\/p>\n\n<ul>\n<li>Image alt text, ARIA labels, contrast and CSS corrections<\/li>\n<li>Structural fixes (heading levels, lists, form labels, \u2026)<\/li>\n<li>Optional accessibility overlay (an assistive aid \u2014 not a replacement for real fixes)<\/li>\n<li>Guided site connection in the WordPress admin<\/li>\n<\/ul>\n\n<p><strong>Deutsch:<\/strong> Site-Check Accessibility verbindet deine WordPress-Seite mit der\n<strong>Site-Check<\/strong>-Webapp. In der Webapp gepr\u00fcfte und freigegebene\nBarrierefreiheits-Verbesserungen landen automatisch auf der Live-Seite \u2014 ohne\nmanuelle Eingriffe im Code, serverseitig geschrieben und jederzeit widerrufbar.\nDie Auslieferung erfolgt nur bei aktiver Verbindung und g\u00fcltigem Abonnement.<\/p>\n\n<p>This plugin is the connector (client) for the Site-Check service; the web app\nand backend are a separate, proprietary service.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>The plugin communicates only with the Site-Check web app at\n    https:\/\/site-check.de to exchange accessibility fixes and connection\/health\nstatus. It transfers the page URLs and markup needed to compute and verify\nfixes; it does not send data to any third party and sets no tracking cookies.\nDetails: https:\/\/site-check.de\/datenschutz<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin is a connector to Site-Check, a hosted (paid) accessibility service\noperated by site-works AG. It requires a Site-Check account and an active\nsubscription; scanning and fix-computation run on Site-Check's servers, not\ninside WordPress. The plugin communicates with the Site-Check web app at\nhttps:\/\/site-check.de in these cases:<\/p>\n\n<ul>\n<li>Connecting the site: the pairing code you enter and your site's base URL are\nsent to exchange them for a connection token.<\/li>\n<li>Fix sync and verification: page URLs and page markup are sent so the service\ncan compute and verify accessibility fixes; connection\/health status is\nreported back.<\/li>\n<li>Assistance overlay (only when enabled): visitor-facing pages load the overlay\nruntime script from https:\/\/site-check.de\/api\/overlay\/runtime.js, and the\noverlay fetches its configuration from https:\/\/site-check.de\/api\/overlay\/config.<\/li>\n<\/ul>\n\n<p>No data is sent to any other third party, and the plugin sets no tracking\ncookies.<\/p>\n\n<ul>\n<li>Terms of Service: https:\/\/site-check.de\/agb<\/li>\n<li>Privacy Policy: https:\/\/site-check.de\/datenschutz<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin ZIP under <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>, or unpack\nit into <code>wp-content\/plugins\/site-check-accessibility\/<\/code>.<\/li>\n<li>Activate <strong>Site-Check Accessibility<\/strong> under <strong>Plugins<\/strong>.<\/li>\n<li>Open <strong>Site-Check Accessibility<\/strong> in the admin sidebar.<\/li>\n<li>Generate a pairing code in the Site-Check web app (https:\/\/site-check.de) and\npaste it into the plugin form to connect the site.<\/li>\n<li>Scan your site in the web app, review and approve fixes \u2014 they appear on the\nlive site automatically.<\/li>\n<\/ol>\n\n<p>Requirements: WordPress 6.0+, PHP 8.0+ with the <code>dom<\/code> extension. Pretty\npermalinks should be enabled.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20change%20my%20content%20permanently%3F\"><h3>Does the plugin change my content permanently?<\/h3><\/dt>\n<dd><p>No. Fixes are applied at delivery time and are fully reversible. They are served\nonly while the site is connected and the subscription is active; otherwise the\noriginal markup is delivered unchanged.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20edit%20code%20or%20templates%3F\"><h3>Do I need to edit code or templates?<\/h3><\/dt>\n<dd><p>No. Once connected, approved fixes are applied automatically \u2014 no theme or\ntemplate edits are required.<\/p><\/dd>\n<dt id=\"the%20connection%20or%20fixes%20don%27t%20work%20on%20my%20host.\"><h3>The connection or fixes don't work on my host.<\/h3><\/dt>\n<dd><p>Some hosts strip the <code>Authorization<\/code> header before it reaches PHP. The plugin\nalso accepts the pairing token via the <code>X-Sw-Api-Token<\/code> header, which survives\nmost such configurations; if pairing still fails, make sure either that header\nor <code>Authorization: Bearer<\/code> is passed through to PHP (typically an <code>.htaccess<\/code>\nrule on Apache + mod_php).<\/p><\/dd>\n<dt id=\"what%20data%20leaves%20my%20site%3F\"><h3>What data leaves my site?<\/h3><\/dt>\n<dd><p>Only the data needed to sync fixes and connection status with the Site-Check web\napp. See the Privacy section below.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Fixed: a fix that was already written into the delivered HTML was applied a\nsecond time by the client runtime. Because the two run against differently\nshaped documents \u2014 the served page on one side, the page after the site's own\nJavaScript on the other \u2014 the second write could land on a different element\nthan the first. On sliders that clone their slides this produced labels on the\nwrong slide. The server half now tells the runtime which fixes it already\napplied, and the runtime skips them.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Front-end scripts and styles are now added through the WordPress enqueue API\n(wp_enqueue_script \/ wp_enqueue_style + wp_add_inline_script \/\nwp_add_inline_style) instead of being written into the page HTML. The client\napply runtime ships as a real enqueued file (assets\/js\/sc-acc-apply.js) with\nthe per-page data attached inline. Server-side fixes are unchanged.<\/li>\n<li>REST: \/connect-status and \/webapp-status now require authorization\n(manage_options or the connector bearer token) instead of being public.<\/li>\n<li>Themes that do not call wp_head()\/wp_footer() fall back to an output-buffer\ninjection so the overlay + client runtime still work there; standards-compliant\nthemes use the enqueue path only (assets injected once, never duplicated).<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<p>(2026-07-23)\n* Store release under the new name <strong>Site-Check Accessibility<\/strong> (renamed from\n  \"sw-acc-connector\"). Relicensed to GPLv2-or-later. The plugin folder, text\n  domain, classes, admin menu and upload directory were renamed; the REST wire\n  (namespace, option keys, signing key) is unchanged, so existing pairings keep\n  working after re-installing \u2014 the pairing token stays in wp_options and the\n  upload directory is migrated automatically on first load.\n* Added: fail-open output buffering \u2014 a mutation error can never blank the page;\n  the original response is served instead.\n* Version reset to 1.0.0 (continuation of the 2.6.0 line; same feature set).\n* Requires re-installing the renamed plugin on customer sites.<\/p>\n\n<h4>2.6.0<\/h4>\n\n<p>(2026-07-22)\n* Fix: fixes are now removed on the frontend when the site is disconnected or\n  the subscription lapses \u2014 not only when the admin plugin page is opened. The\n  injector serves from the signed cache (24h grace); the only frontend\n  revalidation (try_refresh_signed_cache) previously acted on HTTP 200\/304 only\n  and ignored 401\/403, so disconnected\/unsubscribed sites kept serving cached\n  fixes for up to 24h. Now it reconciles like the admin healthcheck:\n  - 401 (token revoked \u2014 site disconnected\/deleted) -&gt; clear_stored_api_token()\n    drops the token AND the signed cache; fixes disappear on the next pageload\n    and the status shows \"disconnected\" immediately.\n  - 403 (entitlement_inactive \u2014 subscription lapsed) -&gt; drop the signed cache\n    only, keep the pairing; delivery resumes automatically on re-subscribe.\n  Guarantees fixes are delivered only with an active connection + valid\n  subscription. The webapp \/clear-cache push on disconnect remains the immediate\n  path; this is the fail-safe reconciliation.\n* Requires re-deployment of the plugin on customer sites.<\/p>\n\n<h4>2.5.0<\/h4>\n\n<p>(2026-07-22)\n* Fix: the accessibility overlay would not load on WordPress sites. The\n  hard-coded webapp base URL pointed at the <code>www<\/code> host\n  (https:\/\/www.site-check.de) while the Grav connector uses the canonical apex\n  (https:\/\/site-check.de). Post-EU-cutover <code>www<\/code> 301-redirects to the apex, and\n  the overlay runtime's config fetch (<code>GET \/api\/overlay\/config<\/code>, CORS\n  origin-bound) plus the heartbeat POST (<code>Authorization<\/code> bearer -&gt; preflighted)\n  do not follow a cross-origin 301 cleanly -&gt; the overlay panel never mounted.\n  Base URL corrected to the apex, identical to the Grav connector.\n* Requires re-deployment of the plugin on customer sites for the overlay to be\n  delivered again.<\/p>\n\n<h4>2.4.0<\/h4>\n\n<p>(2026-07-22)\n* Added: <code>label_append<\/code> server-side render path (WCAG 3.3.2 required indicator).\n      label_append overrides were persisted but never rendered \u2014 the output loop\n  had no handler. <code>ServerHtmlMutator::applyLabelAppend<\/code> now resolves the field's\n       (explicit <code>label[for]<\/code>, then nearest wrapping <code>&lt;label&gt;<\/code>, then an\n  unambiguous unassociated sibling <code>&lt;label&gt;<\/code> in the field's parent) and appends a\n  visible \" *\"; <code>inject_label_append_bootstrap<\/code> runs it server-side first with a\n  client fallback for post-JS\/SPA fields. Idempotent (<code>data-sc-acc-required-marked<\/code>);\n  a safe no-op when the field has no label (the paired <code>aria-required<\/code> write still\n  lands). The marker span is <code>aria-hidden<\/code> so it reinforces visually only. New\n  healthcheck feature: <code>label-append<\/code>.\n* Powers the reworked <code>missing-required-indicator<\/code> fix: <code>aria-required=\"true\"<\/code> +\n  a visible \" *\" on the field's label, instead of a \"Pflichtfeld\" text node after\n  the input. Re-deployment required for the visible marker to render.\n* Fixed: <code>label_append<\/code> was dropped before render \u2014 the cache normaliser\n  (<code>index_override_items_by_id<\/code>) had no branch for it, so the attribute-required\n  catch-all silently discarded it. Added the branch; the leading space of \" *\"\n  is preserved (was trimmed).\n* Fixed: disconnect left fixes live. <code>clear_stored_api_token()<\/code> now also unlinks\n  the signed cache, so the webapp-status reconciler (401 \/ DISCONNECTED) removes\n  the fixes instead of leaving them until the 24h grace expired. Combined with\n  the webapp calling <code>\/clear-cache<\/code> on delete\/disconnect, fixes are removed\n  immediately from both sides.<\/p>\n\n<h4>2.3.3<\/h4>\n\n<ul>\n<li>Hotfix on top of 2.3.2: <code>tag_replace<\/code> runtime now remembers per-item which\nitems have already been applied (<code>appliedIndex<\/code> map inside the IIFE). Without\nthis, the MutationObserver re-ran apply() after the first replacement and\nthe originally-second <code>&lt;h2&gt;<\/code> became the new \"first match\" of a positional\nselector like <code>div.bp-container h2:nth-of-type(1)<\/code> \u2014 and got promoted too.\nPer-item idempotency makes apply() safe across the entire page lifecycle.<\/li>\n<\/ul>\n\n<h4>2.3.2<\/h4>\n\n<ul>\n<li>Bugfix: <code>tag_replace<\/code> runtime applies the transformation to the <strong>first\neligible match only<\/strong> (previously: all matches). This alone was not enough\n\u2014 see 2.3.3 for the actual fix.<\/li>\n<\/ul>\n\n<h4>2.3.1<\/h4>\n\n<ul>\n<li>Schema bump to pipeline version 1.0.1 (additive, backward-compatible).<\/li>\n<li><code>sibling_text_insert<\/code> carries an optional <code>wrapTag<\/code> (whitelisted to\nh1\u2013h6\/p\/span\/legend) so the runtime can render an <code>&lt;h1&gt;<\/code> (and not a\n  ) where the fix is meant to add a real heading.<\/li>\n<li><code>tag_replace<\/code> carries an optional <code>inlineStyle<\/code> \u2014 a compact CSS string the\nruntime merges onto the replaced element's <code>style<\/code> attribute. Prevents\ntheme styling from breaking when promoting e.g. <code>&lt;h2&gt;<\/code> to <code>&lt;h1&gt;<\/code>.<\/li>\n<li>Disconnect (admin button + REST endpoint) now removes <code>cache.json<\/code> and the\ncached state option, so a previously paired site stops shipping fixes\nimmediately after disconnect. Plugin deactivation stays a no-op.<\/li>\n<\/ul>\n\n<h4>2.3.0<\/h4>\n\n<ul>\n<li>Initial WordPress release. Feature-parity with the Grav plugin v2.3.0\non the apply pipeline (alt-text, aria-label, attribute-override,\ncontrast-adjustment, css-declaration-set, sibling-text-insert,\nlabel-append, placeholder-append, html-insert-before, text-content-override,\ndocument-override, tag_replace, element_replace, element_remove).<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<p>(2026-07-08)\n* Breaking (delivery model): fixes are now written server-side into the\n  delivered HTML (raw HTTP response, no client JS required); only post-JS\/SPA\n  elements fall back to a client bootstrap (<code>data-sc-acc-fallback=\"1\"<\/code>). Same\n  target elements, same result, same reversibility, same subscription binding \u2014\n  only the mutation site changes (server HTML instead of browser DOM).\n* Vendored HTML5-spec serializer (<code>masterminds\/html5<\/code>) + a CMS-agnostic\n  ServerHtmlMutator engine. Adds <code>server-side-apply<\/code> to the healthcheck feature\n  list so the webapp can verify fixes statically.\n* Security: the retained client-fallback scripts keep the 1.1.1 JSON escaping\n  (<code>JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT<\/code>) on all sinks.\n* Requires re-deployment of the plugin on customer sites.<\/p>\n\n<h4>1.1.1<\/h4>\n\n<p>(2026-07-06)\n* Security: extends the 1.0.6 XSS-hardening (<code>JSON_HEX_TAG | JSON_HEX_AMP |\n  JSON_HEX_APOS | JSON_HEX_QUOT<\/code>) to every inline-<code>&lt;script&gt;<\/code> JSON sink added\n  since \u2014 the client-side alt injector and the Phase-0 bootstraps\n  sr_only_text_insert \/ css_rule_inject \/ element_insert.\n* Requires re-deployment of the plugin on customer sites.<\/p>\n\n<h4>1.1.0<\/h4>\n\n<p>(2026-07-04)\n* Parity with Grav plugin 1.3.0: new fix type <code>attribute_remove<\/code> \u2014 pure\n  client-side attribute deletion via the selector-overrides bootstrap\n  (<code>operation: \"remove\"<\/code>), verify anchor <code>data-sc-acc-managed-removed<\/code>.\n  Includes the optional <code>removeAttributes<\/code> piggyback field on\n  alt_text_override \/ aria_label_set \/ attribute_override \/\n  text_content_override items (removal applied after the value write).\n* Three new WCAG-Phase-0 fix types (shared-decisions \u00a71.1) \u2014 1:1 port of\n  Grav plugin 1.4.0 (identical validators, id derivation and bootstrap JS),\n  all applied strictly client-side via  bootstraps (no DOM\n  re-serialization):\n  * <code>sr_only_text_insert<\/code> \u2014 visually-hidden screenreader text\n    (<code>&lt;span class=\"sc-acc-sr-only\" data-sc-acc-sr-only-id=\"&lt;item-id&gt;\"&gt;<\/code>,\n    text via createTextNode, <code>&lt;<\/code>\/<code>&gt;<\/code> rejected; the class is defined once\n    via <code>&lt;style data-sc-acc-sr-only-style&gt;<\/code>).\n  * <code>css_rule_inject<\/code> \u2014 fail-closed validated CSS rules collected into a\n    single <code>&lt;style data-sc-acc-css-inject&gt;<\/code> tag (no at-rules, no\n    url()\/expression()\/javascript:, no <code>{}<\/code>\/<code>&lt;&gt;<\/code>\/<code>;<\/code>\/<code>@<\/code>\/backslash in\n    values; re-validated on the render path).\n  * <code>element_insert<\/code> \u2014 whitelisted HTML (a\/span\/p\/button\/div only; no\n    script\/style\/iframe, no event handlers, no javascript:\/vbscript:\/\n    data:text\/html URLs, no <code>&amp;#<\/code>\/<code>&amp;colon;<\/code> entities, no comments\/doctype)\n    inserted via template + insertAdjacentElement, de-dup via\n        data-sc-acc-insert-id=\"\".\n* Apply dispatcher hardened: unknown fix types are now rejected with\n      unsupported_fix_type:  instead of being silently treated as\n  alt_text_override. Every webapp-sent type has an explicit case; a\n  missing\/empty type still means alt_text_override (legacy alt payloads).\n* Cache-store id normalization: explicit branches for attribute_remove,\n  text_content_override (Grav 2.3.2 parity \u2014 id-less items were silently\n  dropped), sr_only_text_insert, css_rule_inject and element_insert.\n* Healthcheck features list extended: attribute-remove, sr-only-insert,\n  css-rule-inject, element-insert.\n* Requires re-deployment of the plugin on customer sites.<\/p>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Security: XSS-hardening of the inline <code>&lt;script&gt;<\/code> bootstrap injectors. All JSON\nembedded in an inline script (selector-overrides, sibling-inserts,\ndocument-overrides, tag_replace \/ element_replace \/ element_remove, overlay\nbootstrap) now also uses <code>JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS |\nJSON_HEX_QUOT<\/code>, so a fix value \/ overlay label containing <code>&lt;\/script&gt;\u2026<\/code> can no\nlonger break out of the inline script.<\/li>\n<li>Fix: default webapp base URL corrected from https:\/\/www.site-check.de to the\ncanonical apex https:\/\/site-check.de \u2014 post-EU-cutover www 301-redirects and\nthe plugin's POST callbacks (sync\/register) must target the apex.<\/li>\n<li>Requires re-deployment of the plugin on customer sites.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Bootstrap-Payload for the overlay runtime now ships <code>apiToken<\/code> so the\nbrowser-side overlay can authenticate the new <code>POST \/api\/overlay\/heartbeat<\/code>\ncall against the webapp. Without the token the runtime simply skips the\nheartbeat \u2014 overlay itself keeps working.<\/li>\n<li>New WP-admin toggle \"Overlay-Runtime auf der Website laden\" (default ON)\nacts as a local kill-switch independent of the webapp-driven enabled flag.<\/li>\n<li><code>sync-status<\/code> response now reports the real <code>overlayRuntimeEnabled<\/code> value\ninstead of a hard-coded <code>true<\/code>.<\/li>\n<li>Requires re-deployment of the plugin on customer sites so the heartbeat\nappears in the dashboard health view.<\/li>\n<\/ul>","raw_excerpt":"Applies accessibility fixes reviewed in the Site-Check web app directly to your WordPress site \u2014 server-side, no manual code edits, fully reversible.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/351384","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=351384"}],"author":[{"embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sitecheck"}],"wp:attachment":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=351384"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=351384"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=351384"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=351384"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=351384"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=351384"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}