{"id":253232,"date":"2025-09-30T08:50:31","date_gmt":"2025-09-30T08:50:31","guid":{"rendered":"https:\/\/en-gb.wordpress.org\/plugins\/responsive-picture-block\/"},"modified":"2026-03-12T08:40:00","modified_gmt":"2026-03-12T08:40:00","slug":"responsive-picture-block","status":"publish","type":"plugin","link":"https:\/\/twd.wordpress.org\/plugins\/responsive-picture-block\/","author":23278042,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.1.1","stable_tag":"1.1.1","tested":"6.9.4","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"Responsive Picture Block","header_author":"Core Essentials","header_description":"<picture> HTML element for blocks. Wrap multiple core\/image blocks for art direction. Uses <source media> per child with optional media override. Robust ordering for mixed media queries (max\/min\/range).","assets_banners_color":"281b8c","last_updated":"2026-03-12 08:40:00","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/coreessentials.online\/plugins-for-wordpress\/responsive-picture-block\/","header_author_uri":"https:\/\/coreessentials.online\/","rating":5,"author_block_rating":0,"active_installs":0,"downloads":945,"num_ratings":1,"support_threads":2,"support_threads_resolved":2,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"coreessentials","date":"2025-09-30 11:05:47"},"1.1.0":{"tag":"1.1.0","author":"coreessentials","date":"2026-02-17 09:27:20"},"1.1.1":{"tag":"1.1.1","author":"coreessentials","date":"2026-03-12 08:40:00"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon.svg":{"filename":"icon.svg","revision":3370243,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3370243,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3370243,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3480941,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/responsive-picture-block\\\/\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"phpExtensionBundles\":[\"kitchen-sink\"],\"steps\":[{\"step\":\"setSiteOptions\",\"options\":{\"blogname\":\"Responsive Picture Block Demo\"}},{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"responsive-picture-block\"},\"options\":{\"activate\":true}},{\"step\":\"mkdir\",\"path\":\"\\\/wordpress\\\/wp-content\\\/uploads\\\/2025\\\/11\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/emilia-willberg-adEviDyBoEI-unsplash.webp\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/iwtw-richb\\\/demo-content\\\/refs\\\/heads\\\/main\\\/emilia-willberg-adEviDyBoEI-unsplash.webp\"}},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/steven-van-elk-wyPZrkpuyu4-unsplash.webp\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/iwtw-richb\\\/demo-content\\\/refs\\\/heads\\\/main\\\/steven-van-elk-wyPZrkpuyu4-unsplash.webp\"}},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/emilia-willberg-adEviDyBoEI-unsplash.webp --porcelain\"},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/steven-van-elk-wyPZrkpuyu4-unsplash.webp --porcelain\"},{\"step\":\"runPHP\",\"code\":\"<?php require_once '\\\/wordpress\\\/wp-load.php'; $attachments = get_posts(['post_type' => 'attachment', 'post_status' => 'inherit', 'posts_per_page' => -1, 'orderby' => 'ID', 'order' => 'DESC']); $steven_id = null; $emilia_id = null; foreach ($attachments as $att) { $file = get_attached_file($att->ID); if (strpos($file, 'steven-van-elk') !== false) { $steven_id = $att->ID; } if (strpos($file, 'emilia-willberg') !== false) { $emilia_id = $att->ID; } if ($steven_id && $emilia_id) break; } if (!$steven_id || !$emilia_id) { echo 'Error: Could not find attachments'; exit; } $steven_src = wp_get_attachment_image_url($steven_id, 'large'); $emilia_src = wp_get_attachment_image_url($emilia_id, 'large'); if (!$steven_src || !$emilia_src) { echo 'Error: Could not get image URLs'; exit; } $content = '<!-- wp:spacer {\\\"height\\\":\\\"60px\\\"} -->' . \\\"\\\\n\\\" . '<div style=\\\"height:60px\\\" aria-hidden=\\\"true\\\" class=\\\"wp-block-spacer\\\"><\\\/div>' . \\\"\\\\n\\\" . '<!-- \\\/wp:spacer -->' . \\\"\\\\n\\\\n\\\" . '<!-- wp:paragraph -->' . \\\"\\\\n\\\" . '<p>Preview this page in desktop and mobile mode to see the change of art direction based on device. <br><strong>Challenge<\\\/strong>: Try adding a tablet version or a landscape only version with a custom media query.<\\\/p>' . \\\"\\\\n\\\" . '<!-- \\\/wp:paragraph -->' . \\\"\\\\n\\\\n\\\" . '<!-- wp:spacer {\\\"height\\\":\\\"60px\\\"} -->' . \\\"\\\\n\\\" . '<div style=\\\"height:60px\\\" aria-hidden=\\\"true\\\" class=\\\"wp-block-spacer\\\"><\\\/div>' . \\\"\\\\n\\\" . '<!-- \\\/wp:spacer -->' . \\\"\\\\n\\\\n\\\" . '<!-- wp:ce\\\/responsive-picture -->' . \\\"\\\\n\\\" . '<!-- wp:image {\\\"id\\\":' . $steven_id . ',\\\"sizeSlug\\\":\\\"large\\\",\\\"linkDestination\\\":\\\"none\\\"} -->' . \\\"\\\\n\\\" . '<figure class=\\\"wp-block-image size-large\\\"><img src=\\\"' . esc_url($steven_src) . '\\\" alt=\\\"\\\" class=\\\"wp-image-' . $steven_id . '\\\"\\\/><\\\/figure>' . \\\"\\\\n\\\" . '<!-- \\\/wp:image -->' . \\\"\\\\n\\\\n\\\" . '<!-- wp:image {\\\"id\\\":' . $emilia_id . ',\\\"sizeSlug\\\":\\\"large\\\",\\\"linkDestination\\\":\\\"none\\\",\\\"ceViewport\\\":\\\"mobile\\\"} -->' . \\\"\\\\n\\\" . '<figure class=\\\"wp-block-image size-large\\\"><img src=\\\"' . esc_url($emilia_src) . '\\\" alt=\\\"\\\" class=\\\"wp-image-' . $emilia_id . '\\\"\\\/><\\\/figure>' . \\\"\\\\n\\\" . '<!-- \\\/wp:image -->' . \\\"\\\\n\\\" . '<!-- \\\/wp:ce\\\/responsive-picture -->'; wp_insert_post(['post_title' => 'Responsive Picture Block Test', 'post_name' => 'responsive-picture-block', 'post_content' => $content, 'post_status' => 'publish', 'post_type' => 'page']); echo 'OK';\"}]}"}},"all_blocks":{"ce\/responsive-picture":{"name":"ce\/responsive-picture","title":"Responsive Picture (Group)"}},"tagged_versions":["1.0.0","1.1.0","1.1.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3370243,"resolution":"1","location":"assets","locale":""},"screenshot-2.gif":{"filename":"screenshot-2.gif","revision":3371045,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3370243,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3370348,"resolution":"4","location":"assets","locale":""}},"screenshots":{"1":"Block wrapper with Desktop, Tablet, Mobile child options","2":"Front-end markup: <code>&lt;picture&gt;<\/code> with differnt image for mobile","3":"Choosing Responsive Picture Block in the block editor"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[8521,148857,148076,53596,2698],"plugin_category":[],"plugin_contributors":[242178],"plugin_business_model":[],"class_list":["post-253232","plugin","type-plugin","status-publish","hentry","plugin_tags-art-direction","plugin_tags-block-editor","plugin_tags-gutenberg","plugin_tags-picture-element","plugin_tags-responsive-images","plugin_contributors-coreessentials","plugin_committers-coreessentials","plugin_support_reps-richard-b"],"banners":{"banner":"https:\/\/ps.w.org\/responsive-picture-block\/assets\/banner-772x250.png?rev=3370243","banner_2x":"https:\/\/ps.w.org\/responsive-picture-block\/assets\/banner-1544x500.png?rev=3370243","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/responsive-picture-block\/assets\/icon.svg?rev=3370243","icon":"https:\/\/ps.w.org\/responsive-picture-block\/assets\/icon.svg?rev=3370243","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/responsive-picture-block\/assets\/screenshot-1.png?rev=3370243","caption":"Block wrapper with Desktop, Tablet, Mobile child options"},{"src":"https:\/\/ps.w.org\/responsive-picture-block\/assets\/screenshot-2.gif?rev=3371045","caption":"Front-end markup: <code>&lt;picture&gt;<\/code> with differnt image for mobile"},{"src":"https:\/\/ps.w.org\/responsive-picture-block\/assets\/screenshot-3.png?rev=3370243","caption":"Choosing Responsive Picture Block in the block editor"},{"src":"https:\/\/ps.w.org\/responsive-picture-block\/assets\/screenshot-4.png?rev=3370348","caption":""}],"raw_content":"<!--section=description-->\n<p><strong>Core Essentials \u2013 Responsive Picture Block<\/strong> turns several standard <strong>Image<\/strong> blocks into one semantic, front-end <code>&lt;picture&gt;<\/code> HTML element. It\u2019s built for <strong>art direction<\/strong>: choose <strong>different crops, compositions, or formats<\/strong> for different breakpoints (e.g., a tight mobile crop, a wider desktop crop, or an AVIF\/WebP source).<\/p>\n\n<p>Why this matters:<\/p>\n\n<ul>\n<li><p><strong><code>&lt;picture&gt;<\/code> vs <code>&lt;img srcset&gt;<\/code><\/strong><br \/>\n  srcset is great for picking the right <strong>resolution<\/strong> of the <em>same<\/em> image. But when you need different <strong>content<\/strong> (crop\/ratio\/composition) at different viewport widths, you need <strong>art direction<\/strong> \u2014 that\u2019s exactly what <code>&lt;picture&gt;<\/code> does by letting you swap <strong>entire sources<\/strong> via <code>&lt;source media=\"\u2026\"&gt;<\/code>.<\/p><\/li>\n<li><p><strong>Editor-first UX<\/strong><br \/>\nAuthors see a single \u201cResponsive Picture (Block)\u201d wrapper, then insert one Image per breakpoint. The plugin mirrors the link \/caption from the Desktop image. Per-image design controls (aspect ratio, object-fit, width\/height) are respected. The block\u2019s <strong>preview<\/strong> shows the native <strong>Desktop \/ Tablet \/ Mobile<\/strong> toolbar:<\/p>\n\n<ul>\n<li>Desktop preview \u21d2 show <strong>all<\/strong> child images  <\/li>\n<li>Tablet preview \u21d2 show <strong>Tablet<\/strong>, else <strong>Desktop<\/strong>, else <strong>Mobile<\/strong>  <\/li>\n<li>Mobile preview \u21d2 show <strong>Mobile<\/strong>, else <strong>Tablet<\/strong>, else <strong>Desktop<\/strong><\/li>\n<\/ul><\/li>\n<li><p><strong>Perfect source ordering<\/strong><br \/>\nCustom media queries are <strong>auto-sorted<\/strong> so the correct <code>&lt;source&gt;<\/code> wins (most specific first). Works with <code>max-width<\/code>, <code>min-width<\/code>, and range queries.<\/p><\/li>\n<\/ul>\n\n<h3>Key Features<\/h3>\n\n<ul>\n<li>Wraps multiple core <strong>Image<\/strong> blocks into a single semantic <code>&lt;picture&gt;<\/code><\/li>\n<li>Pick <strong>Desktop \/ Tablet \/ Mobile \/ Custom<\/strong> images (true art direction)<\/li>\n<li><strong>Override <code>media<\/code><\/strong> per Tablet\/Mobile\/Custom (e.g., <code>(max-width: 1200px)<\/code>)<\/li>\n<li>Optional <strong><code>sizes<\/code> override<\/strong> per source (advanced bandwidth tuning)<\/li>\n<li>Allows <strong>width, height, aspect-ratio, object-fit<\/strong> per breakpoint<\/li>\n<li>Uses <strong>link + caption<\/strong> from the Desktop (fallback) image<\/li>\n<li>Editor <strong>preview<\/strong> follows WordPress\u2019 device switcher (Desktop\/Tablet\/Mobile)<\/li>\n<li>Prevents layout overflow; picture wrapper is fully responsive<\/li>\n<li>Works with standard WP image sizes and responsive <code>srcset<\/code><\/li>\n<li>Lightweight, no front-end JS \u2014 pure HTML\/CSS on the front end<\/li>\n<\/ul>\n\n<h3>Why <code>&lt;picture&gt;<\/code> (Art Direction 101)<\/h3>\n\n<p>When your layout needs <strong>different imagery<\/strong> across breakpoints (e.g., a vertical crop on phones and a wide landscape on desktops), you\u2019re doing <strong>art direction<\/strong>. The <code>&lt;picture&gt;<\/code> element enables this by letting the browser <strong>choose an entire source<\/strong> based on <code>media<\/code> conditions (and even file <code>type<\/code>, like AVIF\/WebP), not just a different width of the same file. The result is <strong>better design control<\/strong> and <strong>faster pages<\/strong> because each device downloads <strong>only the most appropriate asset<\/strong> for its layout saving you bandwidth as well as having compositions control.<\/p>\n\n<h3>Use Cases<\/h3>\n\n<ul>\n<li>Hero banners with <strong>different crops<\/strong> for mobile vs desktop  <\/li>\n<li>Product images where the <strong>subject framing<\/strong> changes on small screens  <\/li>\n<li>Editorial layouts that require <strong>portrait vs landscape<\/strong> compositions  <\/li>\n<li>File <strong>format switching<\/strong> (e.g., AVIF\/WebP with PNG\/JPEG fallback)<\/li>\n<\/ul>\n\n<h3>Usage<\/h3>\n\n<ol>\n<li><strong>Insert<\/strong> the <strong>Responsive Picture (Block)<\/strong> block.  <\/li>\n<li><strong>Add Image blocks<\/strong> inside it for: Desktop (fallback), Tablet, Mobile, and\/or Custom.  <\/li>\n<li><strong>Select each Image<\/strong> and open the <strong>Responsive: Breakpoint<\/strong> panel:\n\n<ul>\n<li><strong>Viewport<\/strong>: Desktop \/ Tablet \/ Mobile \/ Custom  <\/li>\n<li><strong>Override media query<\/strong> (Tablet\/Mobile): optional (e.g., <code>(max-width: 1200px)<\/code>)  <\/li>\n<li><strong>Custom media query<\/strong>: required when using the \u201cCustom\u201d viewport  <\/li>\n<\/ul><\/li>\n<li>(Optional) Open <strong>Advanced: Sizes override<\/strong> to set a custom <code>sizes=\"\"<\/code> for that source.  <\/li>\n<li>Use the editor\u2019s <strong>Desktop \/ Tablet \/ Mobile<\/strong> preview to check the effective image per breakpoint.  <\/li>\n<li>Publish. The front end renders a single <code>&lt;picture&gt;<\/code> with perfectly ordered <code>&lt;source&gt;<\/code> tags and a fallback <code>&lt;img&gt;<\/code>.<\/li>\n<\/ol>\n\n<h3>Block Details<\/h3>\n\n<ul>\n<li>Block name: <code>ce\/responsive-picture<\/code>  <\/li>\n<li>Children: one or more <code>core\/image<\/code> blocks  <\/li>\n<li><p>Front-end HTML output:<\/p>\n\n<pre><code>&lt;picture&gt;\n  &lt;source media=\"(max-width: 767px)\" srcset=\"\u2026\" sizes=\"\u2026\"&gt;\n  &lt;source media=\"(max-width: 1024px)\" srcset=\"\u2026\" sizes=\"\u2026\"&gt;\n  &lt;!-- custom sources (auto-sorted) --&gt;\n  &lt;img src=\"\u2026\" srcset=\"\u2026\" sizes=\"\u2026\" alt=\"\"&gt;\n&lt;\/picture&gt;\n<\/code><\/pre><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> or install via the Plugins screen.<\/li>\n<li>Activate <strong>Core Essentials \u2013 Responsive Picture Block<\/strong>.<\/li>\n<li>In the block editor, add <strong>Responsive Picture (Block)<\/strong> and insert one <strong>Image<\/strong> per breakpoint.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20replace%20%60srcset%60%20%2F%20responsive%20images%3F\"><h3>Does this replace `srcset` \/ responsive images?<\/h3><\/dt>\n<dd><p>No. Each <code>&lt;source&gt;<\/code> (and the fallback <code>&lt;img&gt;<\/code>) still uses WordPress\u2019 native responsive <code>srcset<\/code>. The plugin adds <strong>art direction<\/strong> by swapping <strong>sources<\/strong> per breakpoint; <code>srcset<\/code> then chooses the best <strong>resolution<\/strong> within that source.<\/p><\/dd>\n<dt id=\"can%20i%20add%20multiple%20custom%20breakpoints%3F\"><h3>Can I add multiple custom breakpoints?<\/h3><\/dt>\n<dd><p>Yes. Add more <strong>Custom<\/strong> Images with your media queries. The plugin <strong>sorts<\/strong> them (and Tablet\/Mobile) into the correct order so the right source wins.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20touch%20%60sizes%60%3F\"><h3>Do I need to touch `sizes`?<\/h3><\/dt>\n<dd><p>No. It\u2019s optional and only affects <strong>resolution selection<\/strong> inside a matched source. If you use it, follow the pattern:<br \/>\n    (media) length, \u2026, fallback-length (e.g., <code>(max-width: 1024px) 100vw, 1024px<\/code>).<\/p><\/dd>\n<dt id=\"accessibility%3F%20alt%20text%3F\"><h3>Accessibility? Alt text?<\/h3><\/dt>\n<dd><p>Alt text is taken from the <strong>Desktop Image<\/strong>, the image; the <code>&lt;picture&gt;<\/code> <code>&lt;img&gt;<\/code> carries it.<\/p><\/dd>\n<dt id=\"what%20about%20aspect%20ratio%20and%20scale%3F\"><h3>What about aspect ratio and scale?<\/h3><\/dt>\n<dd><p>All aspect ratio and scale settings are taken from the individual image, so if your mobile image is 9:16 and desktop image is set to 4:3 both will be respected at their screen sizes.<\/p><\/dd>\n<dt id=\"performance%20and%20formats%3F\"><h3>Performance and formats?<\/h3><\/dt>\n<dd><p>You can upload <strong>AVIF\/WebP<\/strong> assets and still provide a PNG\/JPEG fallback in the Desktop image if needed. The browser will pick the <strong>first matching<\/strong> <code>&lt;source&gt;<\/code> (by <code>media<\/code> and optionally <code>type<\/code>) and an optimal width via <code>srcset<\/code>.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20synced%20patterns%20and%20overrides%3F\"><h3>Does it work with Synced Patterns and Overrides?<\/h3><\/dt>\n<dd><p>As of version 1.1.0, the Responsive Picture Block fully supports WordPress Synced Patterns with Overrides. You can:\n1. Create a synced pattern containing a Responsive Picture Block\n2. Enable overrides on the Desktop, Tablet, and Mobile images\n3. Use the pattern across multiple pages\n4. Replace images on each page using the standard \"Replace\" feature\nEach page will display different images while maintaining the same responsive structure and design. The Block Bindings API handles all image attributes (id, url, alt, caption) automatically.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Fixed: Classes and alignments added to the main block are now included<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Thanks: Huge thank you to the @spinndevs team for their feedback and functionality suggestions which powered this version<\/li>\n<li>Added: Full support for WordPress Synced Patterns with Override images per pattern instance<\/li>\n<li>Added: Block Bindings API integration for pattern overrides (id, url, alt, caption attributes)<\/li>\n<li>Changed: Default preview mode is now \"Show All\" for better user experience<\/li>\n<li>Changed: Auto mode now correctly mirrors frontend behaviour (shows only relevant image \/ fallback per viewport)<\/li>\n<li>Improved: Block toolbar simplified to All\/Auto toggle (full controls remain in inspector panel)<\/li>\n<li>Fixed: Floating toolbar now appears correctly when block is selected<\/li>\n<li>Fixed: Block now properly receives pattern override context via uses_context<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Create truly responsive, art-directed images in the block editor. Wrap multiple Image blocks (Desktop\/Tablet\/Mobile\/Custom) and render a single HTML e &hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/253232","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=253232"}],"author":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/coreessentials"}],"wp:attachment":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=253232"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=253232"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=253232"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=253232"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=253232"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=253232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}