{"id":376861,"date":"2026-09-28T08:26:08","date_gmt":"2026-09-28T08:26:08","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/provemark-c2pa-check\/"},"modified":"2026-09-28T18:26:56","modified_gmt":"2026-09-28T18:26:56","slug":"tracefern-image-check-for-c2pa","status":"publish","type":"plugin","link":"https:\/\/twd.wordpress.org\/plugins\/tracefern-image-check-for-c2pa\/","author":23575167,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.3","stable_tag":"0.1.3","tested":"7.1.2","requires":"7.1","requires_php":"8.3","requires_plugins":null,"header_name":"Tracefern Image Check for C2PA","header_author":"Maurice van Loon","header_description":"Verifies the Content Credentials (C2PA) of uploaded images and shows the result in the Media Library.","assets_banners_color":"101d1b","last_updated":"2026-09-28 18:26:56","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":95,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.0":{"tag":"0.1.0","author":"mauricevanloon","date":"2026-09-28 11:28:59","revision":3717036},"0.1.1":{"tag":"0.1.1","author":"mauricevanloon","date":"2026-09-28 12:14:07","revision":3717131},"0.1.2":{"tag":"0.1.2","author":"mauricevanloon","date":"2026-09-28 13:58:44","revision":3717314},"0.1.3":{"tag":"0.1.3","author":"mauricevanloon","date":"2026-09-28 18:26:56","revision":3717745}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3716634,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3716634,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3716634,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3716634,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3717753,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/wp-admin\\\/upload.php?mode=list\",\"preferredVersions\":{\"php\":\"8.3\",\"wp\":\"latest\"},\"steps\":[{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"tracefern-image-check-for-c2pa\"},\"options\":{\"activate\":true}},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/mu-plugins\\\/tracefern-preview-checks.php\",\"data\":\"<?php\\n\\\/**\\n * Live Preview only (SPEC-024 amendment 1): WP-Cron does not run in the\\n * browser Playground, so Tracefern Image Check for C2PA's own queue runs on\\n * admin page loads when it is due. Nothing else runs; nothing is sent.\\n *\\\/\\nadd_action('admin_init', static function (): void {\\n    $next = wp_next_scheduled('tracefern_check');\\n    if ($next !== false && $next <= time()) {\\n        do_action('tracefern_check');\\n    }\\n});\\n\"},{\"step\":\"mkdir\",\"path\":\"\\\/tmp\\\/tracefern-demo\"},{\"step\":\"writeFile\",\"path\":\"\\\/tmp\\\/tracefern-demo\\\/google-20250919-pixel10-npld-picnic-table.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/provemark\\\/tracefern-image-check\\\/v0.1.0\\\/tests\\\/Fixtures\\\/google-20250919-pixel10-npld-picnic-table.jpg\"}},{\"step\":\"writeFile\",\"path\":\"\\\/tmp\\\/tracefern-demo\\\/openai-20260826-c2pa_2x.png\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/provemark\\\/tracefern-image-check\\\/v0.1.0\\\/tests\\\/Fixtures\\\/openai-20260826-c2pa_2x.png\"}},{\"step\":\"writeFile\",\"path\":\"\\\/tmp\\\/tracefern-demo\\\/amazon-20240925-titan-g1.png\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/provemark\\\/tracefern-image-check\\\/v0.1.0\\\/tests\\\/Fixtures\\\/amazon-20240925-titan-g1.png\"}},{\"step\":\"writeFile\",\"path\":\"\\\/tmp\\\/tracefern-demo\\\/fixture-unsigned.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/provemark\\\/tracefern-image-check\\\/v0.1.0\\\/tests\\\/Fixtures\\\/fixture-unsigned.jpg\"}},{\"step\":\"runPHP\",\"code\":\"<?php\\n\\\/\\\/ One byte of image data changed: the first IDAT chunk's 100th data byte,\\n\\\/\\\/ with that chunk's CRC recomputed, as tamperedOpenAiPng() in tests\\\/Pest.php.\\n$bytes = file_get_contents('\\\/tmp\\\/tracefern-demo\\\/openai-20260826-c2pa_2x.png');\\n$chunk = strpos($bytes, 'IDAT') - 4;\\n$length = unpack('N', substr($bytes, $chunk, 4))[1];\\n$data = $chunk + 8;\\n$bytes[$data + 100] = chr(ord($bytes[$data + 100]) ^ 0x01);\\n$bytes = substr_replace($bytes, pack('N', crc32(substr($bytes, $chunk + 4, 4 + $length))), $data + $length, 4);\\nfile_put_contents('\\\/tmp\\\/tracefern-demo\\\/openai-20260826-c2pa_2x-altered.png', $bytes);\\n\"},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/tmp\\\/tracefern-demo\\\/fixture-unsigned.jpg --caption=\\\"An image without Content Credentials. Source: test assets of provemark\\\/c2pa-verifier; MIT licence.\\\"\"},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/tmp\\\/tracefern-demo\\\/amazon-20240925-titan-g1.png --caption=\\\"Generated by Amazon Titan; the signing certificate has since expired, the signature carries a DigiCert timestamp. Source: test fixtures of TrustNXT\\\/c2pa-ts; Apache-2.0 licence.\\\"\"},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/tmp\\\/tracefern-demo\\\/openai-20260826-c2pa_2x-altered.png --caption=\\\"The OpenAI image with one byte of image data changed after signing. Source: test data of richardwooding\\\/c2pa; MIT licence.\\\"\"},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/tmp\\\/tracefern-demo\\\/openai-20260826-c2pa_2x.png --caption=\\\"Generated by OpenAI. Source: test data of richardwooding\\\/c2pa; MIT licence.\\\"\"},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/tmp\\\/tracefern-demo\\\/google-20250919-pixel10-npld-picnic-table.jpg --caption=\\\"Taken with a Google Pixel 10. Source: Wikimedia Commons, NPLD 25 WW new picnic table, by the US Bureau of Land Management; public domain.\\\"\"},{\"step\":\"wp-cli\",\"command\":\"wp cron event run --due-now\"}]}"}},"all_blocks":[],"tagged_versions":["0.1.0","0.1.1","0.1.2","0.1.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3716634,"resolution":"1","location":"assets","locale":"","width":1568,"height":453},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3716634,"resolution":"2","location":"assets","locale":"","width":1176,"height":318},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3716634,"resolution":"3","location":"assets","locale":"","width":1568,"height":613},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3716634,"resolution":"4","location":"assets","locale":"","width":1568,"height":388}},"screenshots":{"1":"The Content Credentials column in the Media Library list.","2":"The attachment details of a verified, AI-generated image.","3":"Settings \u2192 Tracefern: the bundled trust list, DigiCert timestamps and custom trust settings.","4":"The Media Library list filtered to AI-generated images, with the verdict filter above the list."}},"plugin_section":[],"plugin_tags":[2353,274596,283128,233,261422],"plugin_category":[],"plugin_contributors":[283129],"plugin_business_model":[],"class_list":["post-376861","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-c2pa","plugin_tags-content-credentials","plugin_tags-media-library","plugin_tags-provenance","plugin_contributors-mauricevanloon","plugin_committers-mauricevanloon"],"banners":{"banner":"https:\/\/ps.w.org\/tracefern-image-check-for-c2pa\/assets\/banner-772x250.png?rev=3716634","banner_2x":"https:\/\/ps.w.org\/tracefern-image-check-for-c2pa\/assets\/banner-1544x500.png?rev=3716634","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/tracefern-image-check-for-c2pa\/assets\/icon-128x128.png?rev=3716634","icon_2x":"https:\/\/ps.w.org\/tracefern-image-check-for-c2pa\/assets\/icon-256x256.png?rev=3716634","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/tracefern-image-check-for-c2pa\/assets\/screenshot-1.png?rev=3716634","caption":"The Content Credentials column in the Media Library list."},{"src":"https:\/\/ps.w.org\/tracefern-image-check-for-c2pa\/assets\/screenshot-2.png?rev=3716634","caption":"The attachment details of a verified, AI-generated image."},{"src":"https:\/\/ps.w.org\/tracefern-image-check-for-c2pa\/assets\/screenshot-3.png?rev=3716634","caption":"Settings \u2192 Tracefern: the bundled trust list, DigiCert timestamps and custom trust settings."},{"src":"https:\/\/ps.w.org\/tracefern-image-check-for-c2pa\/assets\/screenshot-4.png?rev=3716634","caption":"The Media Library list filtered to AI-generated images, with the verdict filter above the list."}],"raw_content":"<!--section=description-->\n<p><strong>Verified, not just detected.<\/strong> Finding a C2PA manifest in a file is\neasy; knowing whether it is genuine is not. A manifest can be copied onto\nanother image, and an image can be changed after it was signed while its\nmanifest still claims what it did before. Tracefern checks the signature,\nthe hash that ties the manifest to the image's own bytes, and the signer's\ncertificate against the C2PA trust lists. Only when the signature and the\nhash hold does it show \"AI-generated (signed)\", and only when the signer\nis also on the trust list does it say \"Verified\".<\/p>\n\n<p>Content Credentials (C2PA) are a signed record inside an image file: who\nmade or edited it, with which tool, and whether generative AI was used.\nTracefern Image Check for C2PA verifies that record for every JPEG, PNG and WebP you\nupload and shows the verdict where you already work with media.<\/p>\n\n<ul>\n<li><strong>Checked right after upload, on the original file<\/strong>, not on the\nresized copies WordPress or your browser makes. The check runs in the\nbackground, so a file that trips it up can never break an upload.<\/li>\n<li><strong>A verdict per image<\/strong> in a Media Library column and in the attachment\ndetails: who signed it, when, and against which trust list.<\/li>\n<li><strong>\"AI-generated (signed)\"<\/strong> when a manifest that verifies says the image\nwas made by generative AI, also after later edits, and <strong>\"AI-edited\n(signed)\"<\/strong> when AI edited it. Never on a file that does not verify.<\/li>\n<li><strong>Sort and filter<\/strong> the Media Library list by verdict, including all\nAI-generated images.<\/li>\n<li><strong>Check existing images again<\/strong> with WP-CLI:\n  wp tracefern check --all.<\/li>\n<\/ul>\n\n<p>The verdicts:<\/p>\n\n<ul>\n<li><strong>Verified: trusted signer<\/strong> \u2014 the credentials verify and the signer's\ncertificate chains to a trusted certificate authority.<\/li>\n<li><strong>Intact: signer not trusted<\/strong> \u2014 the credentials verify, but the signer\nis not on the trust list. The file is unchanged since signing; who\nsigned it is not vouched for.<\/li>\n<li><strong>Does not verify<\/strong> \u2014 something failed, for example the image was\nchanged after signing. The details list the C2PA status codes.<\/li>\n<li><strong>No Content Credentials<\/strong> \u2014 the file carries none. Most images today.<\/li>\n<li><strong>Could not be checked<\/strong> \u2014 the file could not be read or the check did\nnot finish. The upload always proceeds.<\/li>\n<\/ul>\n\n<p>What it does not do:<\/p>\n\n<ul>\n<li>It never signs anything and holds no keys.<\/li>\n<li>It never blocks an upload.<\/li>\n<li>It makes no network calls. A manifest that is only referenced by URL is\nnot fetched, and trust lists are never downloaded.<\/li>\n<\/ul>\n\n<p>Verification is done by\n<a href=\"https:\/\/github.com\/provemark\/c2pa-verifier\">provemark\/c2pa-verifier<\/a>, a\nC2PA verifier written in PHP, bundled with the plugin.<\/p>\n\n<h3>Development<\/h3>\n\n<p>The source code, the tests and the build are public at\nhttps:\/\/github.com\/provemark\/tracefern-image-check. <code>composer build<\/code> makes the\nplugin's zip from it: it installs the bundled verifier and prefixes its\nnamespace with Strauss, so it cannot collide with another copy. The\nverifier itself is developed at https:\/\/github.com\/provemark\/c2pa-verifier.<\/p>\n\n<h3>Trust lists<\/h3>\n\n<p>By default the plugin trusts the certificate authorities on the C2PA\nconformance programme's trust lists, bundled with the plugin (see\n    trust\/README.md for the date and source), and, optionally, the DigiCert\nTrusted Root G4 for timestamps. Settings \u2192 Tracefern shows the date of the\nbundled copy and lets an administrator replace the lists with their own\ntrust settings. The plugin never downloads a list; a new copy comes with a\nplugin update.<\/p>\n\n<p>The C2PA trust lists are \u00a9 the Coalition for Content Provenance and\nAuthenticity (C2PA), from https:\/\/github.com\/c2pa-org\/conformance-public,\nlicensed under CC BY 4.0 (https:\/\/creativecommons.org\/licenses\/by\/4.0\/).<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin. The server needs PHP 8.3 or later with\nthe <code>openssl<\/code> and <code>mbstring<\/code> extensions.<\/li>\n<li>Upload images as usual. Each JPEG, PNG and WebP is checked in the\nbackground, usually within seconds; until then it shows \"Check pending\".<\/li>\n<li>Optional: under Settings \u2192 Tracefern, choose whether to trust\nDigiCert timestamps, or paste your own trust settings.<\/li>\n<li>Images uploaded before the plugin was active show \"Not checked\". Check\nthem with <code>wp tracefern check --unchecked<\/code> (WP-CLI).<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20is%20this%20different%20from%20plugins%20that%20label%20ai%20images%3F\"><h3>How is this different from plugins that label AI images?<\/h3><\/dt>\n<dd><p>Many plugins look for C2PA or IPTC metadata and label an image as\nAI-generated when they find it. Some count any C2PA manifest as AI, so a\ncamera photo with Content Credentials is labelled AI-generated. Others\nread what the manifest claims without checking it, so an AI image that was\nchanged after signing keeps its label. Tracefern verifies first: a camera\nphoto stays a camera photo, and a changed image says \"Does not verify\" and\nloses the label. It adds no badges to your pages; it gives you the verdict\na label can rely on.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20%22verified%22%20and%20%22intact%22%3F\"><h3>What is the difference between \"Verified\" and \"Intact\"?<\/h3><\/dt>\n<dd><p>Both mean the file is exactly as it was signed. \"Verified\" also means the\nsigner's certificate comes from an authority on the trust list, by default\nthe C2PA conformance programme's list. \"Intact\" means nobody on that list\nvouches for who the signer is.<\/p><\/dd>\n<dt id=\"why%20does%20a%20genuine%20photo%20say%20%22does%20not%20verify%22%3F\"><h3>Why does a genuine photo say \"Does not verify\"?<\/h3><\/dt>\n<dd><p>The file was changed after it was signed, for example by an editor that\nkept the old Content Credentials but not the signature's match with the\npixels. The details show the status codes; <code>assertion.dataHash.mismatch<\/code>\nmeans the image data changed.<\/p><\/dd>\n<dt id=\"why%20do%20most%20of%20my%20images%20show%20%22no%20content%20credentials%22%3F\"><h3>Why do most of my images show \"No Content Credentials\"?<\/h3><\/dt>\n<dd><p>Most cameras and apps do not add them yet, and many services remove them\nwhen an image is shared or downloaded.<\/p><\/dd>\n<dt id=\"does%20%22ai-generated%20%28signed%29%22%20detect%20ai%20images%3F\"><h3>Does \"AI-generated (signed)\" detect AI images?<\/h3><\/dt>\n<dd><p>No. It shows what a verified manifest says about the image or the\nearlier versions it was made from, each of which must verify too. An\nAI image without Content Credentials gets no label. Next to \"Intact: signer\nnot trusted\" the claim comes from a signer nobody on the trust list vouches\nfor.<\/p><\/dd>\n<dt id=\"does%20it%20change%20my%20images%20or%20send%20data%20anywhere%3F\"><h3>Does it change my images or send data anywhere?<\/h3><\/dt>\n<dd><p>No. It only reads the original file and stores the result with the image.\nSettings \u2192 Privacy offers suggested text for your privacy policy.<\/p><\/dd>\n<dt id=\"why%20does%20an%20image%20say%20%22check%20pending%22%3F\"><h3>Why does an image say \"Check pending\"?<\/h3><\/dt>\n<dd><p>The check runs in the background through WP-Cron, on the next request to\nthe site after the upload, usually within seconds. If WP-Cron is switched\noff (<code>DISABLE_WP_CRON<\/code>), the checks run with the site's own cron job.\nAfter an hour without a result the image shows \"Not checked\"; check it\nwith <code>wp tracefern check --unchecked<\/code>.<\/p><\/dd>\n<dt id=\"why%20does%20an%20image%20say%20%22changed%20since%20its%20check%22%3F\"><h3>Why does an image say \"Changed since its check\"?<\/h3><\/dt>\n<dd><p>Its file was replaced after the check by something WordPress did not\nreport, such as another plugin or an upload over FTP. The old verdict no\nlonger applies, so none is shown; check it again with\n    wp tracefern check . An image edited in WordPress's own image\neditor, or restored to its original, is checked again automatically. After\nmoving a site with a tool that does not keep file modification times, or\nwith media moved to external storage, every image can show this; check\nthem again with <code>wp tracefern check --all<\/code>.<\/p><\/dd>\n<dt id=\"which%20formats%20are%20checked%3F\"><h3>Which formats are checked?<\/h3><\/dt>\n<dd><p>JPEG, PNG and WebP. HEIC files are converted to JPEG by the browser before\nupload and arrive without their Content Credentials. Video and audio are\nnot checked.<\/p><\/dd>\n<dt id=\"how%20do%20i%20check%20images%20again%20after%20changing%20the%20trust%20settings%3F\"><h3>How do I check images again after changing the trust settings?<\/h3><\/dt>\n<dd><p>With WP-CLI: <code>wp tracefern check --all<\/code>, or <code>--state=Invalid,error<\/code>,\nor attachment IDs. Add <code>--dry-run<\/code> to see what would be checked.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20multisite%3F\"><h3>Does it work on multisite?<\/h3><\/dt>\n<dd><p>Yes. Each site checks its own uploads and has its own settings. Deleting\nthe plugin removes its data from every site of the network, in one\nrequest; on a network of thousands of sites, prefer WP-CLI.<\/p><\/dd>\n<dt id=\"can%20other%20plugins%20use%20the%20verdict%3F\"><h3>Can other plugins use the verdict?<\/h3><\/dt>\n<dd><p>Yes, through a filter, with no dependency on this plugin:\n    apply_filters( 'tracefern_verdict', null, $attachment_id ). It returns\n    null when the plugin is not active or the ID is not an attachment, and\notherwise an array: <code>status<\/code> (<code>checked<\/code>, <code>pending<\/code>, <code>not_checked<\/code>,\n    changed, <code>unreadable<\/code>), <code>state<\/code>, <code>intact<\/code>, <code>trusted<\/code>, <code>ai<\/code> (true\nexactly when the Media Library shows \"AI-generated (signed)\"), <code>ai_edited<\/code>\n(the same for \"AI-edited (signed)\"), <code>signer<\/code>,\n    signed_at, <code>codes<\/code> and more. <code>signer<\/code> comes from the file: escape it\nwhere you output it.<\/p><\/dd>\n<dt id=\"why%20php%208.3%3F\"><h3>Why PHP 8.3?<\/h3><\/dt>\n<dd><p>The bundled verifier requires PHP 8.3 or later.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>The AI label follows an image's history: an AI image that was later watermarked or converted is still \"AI-generated (signed)\".<\/li>\n<li>New label \"AI-edited (signed)\", and <code>ai_edited<\/code> in the <code>tracefern_verdict<\/code> filter.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Bundles c2pa-verifier 0.2.6, a security release: an image signed with an RSA key whose public exponent is 1 no longer shows as trusted, since such a signature needs no private key.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Other plugins can read the verdict through the <code>tracefern_verdict<\/code> filter.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Verifies the Content Credentials of JPEG, PNG and WebP uploads on the original file, in the background.<\/li>\n<li>Media Library column and attachment details, with an AI label for verified AI images.<\/li>\n<li>Bundled C2PA trust lists (2026-08-14), DigiCert timestamps, custom trust settings.<\/li>\n<li>Sorting and filtering by verdict; <code>wp tracefern check<\/code> for existing images.<\/li>\n<li>Suggested privacy policy text; data removed on uninstall.<\/li>\n<\/ul>","raw_excerpt":"Verifies the Content Credentials (C2PA) of uploaded images (signature, image hash and signer) and shows the verdict in the Media Library.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/376861","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=376861"}],"author":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mauricevanloon"}],"wp:attachment":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=376861"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=376861"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=376861"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=376861"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=376861"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=376861"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}