[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fMl4YOFzMREJOMTJ5JgJFs7MnRifZsFmYBZNZt5Y8qB0":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":11,"last_updated":13,"tested_up_to":14,"requires_at_least":15,"requires_php":16,"tags":17,"homepage":21,"download_link":22,"security_score":23,"vuln_count":11,"unpatched_count":11,"last_vuln_date":24,"fetched_at":25,"vulnerabilities":26,"developer":27,"crawl_stats":24,"alternatives":34,"analysis":136,"fingerprints":175},"headless-converter","Headless Converter","1.0.6","Atte Liimatainen","https:\u002F\u002Fprofiles.wordpress.org\u002Fattlii\u002F","\u003Cp>Converts frontend to JSON response when request is done with certain conditions.\u003C\u002Fp>\n\u003Ch3>Inspiration\u003C\u002Fh3>\n\u003Cp>After creating a bunch of headless WordPress + Web app stacks, I wanted to find a standard and a all-round solution for fetching per page information for web applications inside WordPress. Built-in rest api works fine in basic cases, but it doesn’t support querying by path. Usually this meant that for each project developers would create a custom rest endpoint which would return expected content using content type and slug parameters.\u003C\u002Fp>\n\u003Cp>WordPress has few built-in functions to retrieve content by path, \u003Ca href=\"https:\u002F\u002Fdeveloper.wordpress.org\u002Freference\u002Ffunctions\u002Furl_to_postid\u002F\" rel=\"nofollow ugc\">url_to_postid\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fdeveloper.wordpress.org\u002Freference\u002Ffunctions\u002Fget_page_by_path\u002F\" rel=\"nofollow ugc\">get_page_by_path\u003C\u002Fa>, but they don’t seem to work with multilanguage plugins, taxonomy or archive pages, which means that WP doesn’t have a reliable way to fetch content this way through rest api.\u003C\u002Fp>\n\u003Cp>This plugin converts frontend to JSON which seems after above solution the best way to do things, with added layer of security through application passwords (WordPress v5.6 feature) and a filter, which let’s developers alter outgoing data.\u003C\u002Fp>\n\u003Ch3>How to start using the plugin\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Install and activate this plugin in your environment\u003C\u002Fli>\n\u003Cli>Create application password for a user with administrator role\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>After above steps have been made, make a request to a page with added \u003Ca href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBasic_access_authentication#Client_side\" rel=\"nofollow ugc\">Authorization header\u003C\u002Fa>. See data fetching examples at the end of this documentation for more help\u003C\u002Fp>\n\u003Ch3>Modifying the output\u003C\u002Fh3>\n\u003Cp>Plugin outputs current page’s Post object or null. This can be modified using \u003Ccode>headless-converter-modify-data\u003C\u002Fcode>-filter. You can either modify passed in post object or do your own logic like in the example below.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002F**\n * Modifies Headless Converter plugin's output.\n * \n * @param WPPost|null $post - Current template's post object \n *\u002F\nfunction modify_headless_converter_output($post) {\n  if(is_404()) {\n    return \"this block renders 404 page content\";\n  } else if(is_page()) {\n    return \"this block renders page post types content\";\n  } else if (is_singular('post')) {\n    return \"this block renders single post content\";\n  } else if(is_home()) {\n    return \"this block renders post archive\";\n  } else {\n    return $post;\n  }\n}\n\nadd_filter('headless-converter-modify-data', 'modify_headless_converter_output');\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Data fetching examples\u003C\u002Fh3>\n\u003Ch4>Fetch\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>const username = \"admin\"\nconst password = \"1111 1111 1111 1111 1111\"\nconst url = \"http:\u002F\u002Flocalhost:3000\u002F?page_id=2\"\nconst opts = {\n  headers: {\n     'Authorization': 'Basic ' + btoa(username + \":\" + password) \n  }, \n}\nfetch(url, opts).then(r => r.json()).then(console.log)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Axios\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>const axios = require(\"axios\")\n\nconst username = \"admin\"\nconst password = \"1111 1111 1111 1111 1111\"\nconst url = \"http:\u002F\u002Flocalhost:3000\u002F?page_id=2\"\nconst opts = {\n  auth: {\n    username,\n    password\n  }\n}\n\naxios(url, opts).then(r => r.data).then(console.log)\n\u003C\u002Fcode>\u003C\u002Fpre>\n","Converts frontend to JSON response when request is done with certain conditions.",0,2653,"2022-01-28T19:15:00.000Z","5.9.13","5.6","7.4",[18,19,20],"converter","headless","json","https:\u002F\u002Fgithub.com\u002FAttLii\u002Fheadless-converter","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fheadless-converter.1.0.6.zip",85,null,"2026-03-15T15:16:48.613Z",[],{"slug":28,"display_name":7,"profile_url":8,"plugin_count":29,"total_installs":30,"avg_security_score":23,"avg_patch_time_days":31,"trust_score":32,"computed_at":33},"attlii",3,110,30,84,"2026-04-05T14:56:45.753Z",[35,55,75,91,115],{"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":11,"last_updated":45,"tested_up_to":46,"requires_at_least":47,"requires_php":48,"tags":49,"homepage":53,"download_link":54,"security_score":23,"vuln_count":11,"unpatched_count":11,"last_vuln_date":24,"fetched_at":25},"redirect-front-end-to-login-headless-wp","Redirect Front-end to Login | Headless WP","1.0","Benjamin Intal","https:\u002F\u002Fprofiles.wordpress.org\u002Fbfintal\u002F","\u003Cp>Using WordPress entirely as a CMS (a \u003Ca href=\"https:\u002F\u002Fmedium.com\u002F@jchiatt\u002Fheadless-wordpress-with-react-d573bca02ee0\" rel=\"nofollow ugc\">Headless WordPress\u003C\u002Fa>) is a plausible option for people building web apps using technologies such as React JS or Angular JS to entirely build their front-end.\u003C\u002Fp>\n\u003Cp>Doing this, the front-end (e.g. built with React) becomes decoupled from the back-end (e.g. WordPress). Since WordPress is being used strictly to manage and serve the content via REST API, the WP front-end becomes unusable and unnecessary – hence the term \u003Cem>“headless WordPress”\u003C\u002Fem>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>This plugin essentially removes the front-end of WordPress.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Note that the REST API, and other non-front-end stuff should work as normal.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>No settings page\u003C\u002Fli>\n\u003Cli>Allows backend access\u003C\u002Fli>\n\u003Cli>Allows REST API endpoints\u003C\u002Fli>\n\u003Cli>Redirects (403 Forbidden) all front-end pages to the login page\u003C\u002Fli>\n\u003C\u002Ful>\n","Redirects all front-end pages to the login page, best for building a headless WP REST API backend",40,9846,"2017-09-26T10:46:00.000Z","4.8.28","4.7","5.2",[50,51,19,20,52],"301","401","redirect","http:\u002F\u002Fwordpress.org\u002Fplugins\u002Fredirect-front-end-to-login-headless-wp","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fredirect-front-end-to-login-headless-wp.zip",{"slug":56,"name":57,"version":58,"author":59,"author_profile":60,"description":61,"short_description":62,"active_installs":11,"downloaded":63,"rating":11,"num_ratings":11,"last_updated":64,"tested_up_to":65,"requires_at_least":66,"requires_php":67,"tags":68,"homepage":72,"download_link":73,"security_score":74,"vuln_count":11,"unpatched_count":11,"last_vuln_date":24,"fetched_at":25},"endpointy-menus","EndPointy Menus","1.1.0","Gunjan Jaswal","https:\u002F\u002Fprofiles.wordpress.org\u002Fgunjanjaswal\u002F","\u003Cp>EndPointy Menus adds custom REST API routes to expose your WordPress navigation menus as JSON.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Base namespace:\u003C\u002Fstrong> \u003Ccode>endpointy-menus\u002Fv1\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Endpoints:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>\u003Ccode>GET \u002Fwp-json\u002Fendpointy-menus\u002Fv1\u002Fmenus\u003C\u002Fcode>\u003Cbr \u002F>\nReturns all registered menus with locations and items.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Ccode>GET \u002Fwp-json\u002Fendpointy-menus\u002Fv1\u002Fmenus\u002F\u003Cid>\u003C\u002Fcode>\u003Cbr \u002F>\nReturns a single menu and its items by menu ID.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Ccode>GET \u002Fwp-json\u002Fendpointy-menus\u002Fv1\u002Flocations\u003C\u002Fcode>\u003Cbr \u002F>\nReturns all registered menu locations with assigned menus.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Ccode>GET \u002Fwp-json\u002Fendpointy-menus\u002Fv1\u002Flocations\u002F\u003Clocation>\u003C\u002Fcode>\u003Cbr \u002F>\nReturns a menu assigned to a specific location (e.g., ‘primary’, ‘footer’).\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Query Parameters:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>nested=true\u003C\u002Fcode> – Returns menu items in a hierarchical tree structure with parent-child relationships.\u003Cbr \u002F>\nExample: \u003Ccode>\u002Fwp-json\u002Fendpointy-menus\u002Fv1\u002Fmenus\u002F2?nested=true\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>This is useful for headless WordPress setups or any external app that needs to read your menu structure.\u003C\u002Fp>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Cp>Example requests:\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Get all menus:\u003C\u002Fstrong>\u003Cbr \u002F>\n    https:\u002F\u002Fyour-site.com\u002Fwp-json\u002Fendpointy-menus\u002Fv1\u002Fmenus\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Get single menu by ID:\u003C\u002Fstrong>\u003Cbr \u002F>\n    https:\u002F\u002Fyour-site.com\u002Fwp-json\u002Fendpointy-menus\u002Fv1\u002Fmenus\u002F2\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Get all menu locations:\u003C\u002Fstrong>\u003Cbr \u002F>\n    https:\u002F\u002Fyour-site.com\u002Fwp-json\u002Fendpointy-menus\u002Fv1\u002Flocations\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Get menu by location (e.g., ‘primary’):\u003C\u002Fstrong>\u003Cbr \u002F>\n    https:\u002F\u002Fyour-site.com\u002Fwp-json\u002Fendpointy-menus\u002Fv1\u002Flocations\u002Fprimary\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Get nested menu structure:\u003C\u002Fstrong>\u003Cbr \u002F>\n    https:\u002F\u002Fyour-site.com\u002Fwp-json\u002Fendpointy-menus\u002Fv1\u002Fmenus\u002F2?nested=true\u003Cbr \u002F>\n    https:\u002F\u002Fyour-site.com\u002Fwp-json\u002Fendpointy-menus\u002Fv1\u002Flocations\u002Fprimary?nested=true\u003C\u002Fp>\n\u003Cp>Use these URLs directly from your front-end application or API client.\u003C\u002Fp>\n\u003Ch3>Support the Developer\u003C\u002Fh3>\n\u003Cp>If you find this plugin useful, you can support the developer:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Website: https:\u002F\u002Fgunjanjaswal.me\u003C\u002Fli>\n\u003Cli>GitHub: https:\u002F\u002Fgithub.com\u002Fgunjanjaswal\u002FEndpointy-Menus\u003C\u002Fli>\n\u003Cli>Buy Me a Coffee: https:\u002F\u002Fbuymeacoffee.com\u002Fgunjanjaswal\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Contributing\u003C\u002Fh3>\n\u003Cp>Contributions, issues, and feature requests are welcome!\u003Cbr \u002F>\nGitHub: https:\u002F\u002Fgithub.com\u002Fgunjanjaswal\u002FEndpointy-Menus\u003Cbr \u002F>\nIssues: https:\u002F\u002Fgithub.com\u002Fgunjanjaswal\u002FEndpointy-Menus\u002Fissues\u003C\u002Fp>\n","Expose WordPress menus via a custom REST API endpoint for headless and external applications.",134,"2025-12-16T09:17:00.000Z","6.9.4","5.0","",[19,20,69,70,71],"menus","navigation","rest-api","https:\u002F\u002Fgithub.com\u002Fgunjanjaswal\u002FEndpointy-Menus","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fendpointy-menus.1.1.0.zip",100,{"slug":76,"name":77,"version":78,"author":79,"author_profile":80,"description":81,"short_description":82,"active_installs":11,"downloaded":74,"rating":11,"num_ratings":11,"last_updated":83,"tested_up_to":65,"requires_at_least":84,"requires_php":16,"tags":85,"homepage":89,"download_link":90,"security_score":74,"vuln_count":11,"unpatched_count":11,"last_vuln_date":24,"fetched_at":25},"stcw-headless-assistant","Static Cache Wrangler – Headless Assistant","2.1.0","derickschaefer","https:\u002F\u002Fprofiles.wordpress.org\u002Fderickschaefer\u002F","\u003Cp>\u003Cstrong>Static Cache Wrangler – Headless Assistant\u003C\u002Fstrong> is a companion plugin for \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fstatic-cache-wrangler\u002F\" rel=\"ugc\">Static Cache Wrangler\u003C\u002Fa> that converts cached HTML files into headless CMS-compatible formats for modern headless CMS workflows.  This plugin requires WP-CLI and is intended for developers and administrators who have good working knowledge of operating in shell environments with traditional Linux stream processing commands (e.g. sed, grep, awk, sort) and a willingness to explore the WordPress command-line interface.  This plugin enables composable, command-line interface tooling and IS NOT a point and click solution.\u003C\u002Fp>\n\u003Ch4>Testing Results\u003C\u002Fh4>\n\u003Cp>Tested on cachewrangler.com (15-page WordPress site):\u003C\u002Fp>\n\u003Cul>\n\u003Cli>☑ \u003Cstrong>74% semantic conversion rate\u003C\u002Fstrong> – 564 blocks converted to structured content\u003C\u002Fli>\n\u003Cli>☑ \u003Cstrong>15 pages converted\u003C\u002Fstrong> successfully to Sanity format\u003C\u002Fli>\n\u003Cli>☑ \u003Cstrong>763 links preserved\u003C\u002Fstrong> with proper structure and references\u003C\u002Fli>\n\u003Cli>☑ \u003Cstrong>36 images tracked\u003C\u002Fstrong> with migration metadata\u003C\u002Fli>\n\u003Cli>☑ \u003Cstrong>14 accordions converted\u003C\u002Fstrong> semantically\u003C\u002Fli>\n\u003Cli>☑ \u003Cstrong>13 tables converted\u003C\u002Fstrong> semantically\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Top Conversion Rates Achieved:\u003C\u002Fstrong>\u003Cbr \u002F>\n* Simple pages: 86% semantic conversion\u003Cbr \u002F>\n* Complex pages with mixed content: 74-82%\u003Cbr \u002F>\n* Ultimate test page (141 blocks, 23 different Kadence block types): 52%\u003C\u002Fp>\n\u003Cp>\u003Cstrong>What Falls Back to HTML (requires custom hooks):\u003C\u002Fstrong>\u003Cbr \u002F>\n* Navigation menus (by design – preserves styling)\u003Cbr \u002F>\n* Advanced Kadence blocks (countdown, forms, testimonials, maps, etc.)\u003Cbr \u002F>\n* Premium block libraries (Otter, Spectra – requires additional detectors)\u003C\u002Fp>\n\u003Ch4>Extensible Architecture\u003C\u002Fh4>\n\u003Cp>Unlike hardcoded solutions, this plugin uses a \u003Cstrong>pluggable engine system\u003C\u002Fstrong> where CMS targets can be registered via filters. Ships with Sanity® CMS support (unofficial) out of the box.  It is technically feasible to target Contentful, Strapi, and others via extensions.\u003C\u002Fp>\n\u003Cp>\u003Cem>Sanity® is a registered trademark of Sanity.io. This project is not affiliated with or endorsed by Sanity.io.\u003C\u002Fem>\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Direct Sanity CMS Conversion:\u003C\u002Fstrong>\u003Cbr \u002F>\n* WordPress \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Sanity NDJSON export\u003Cbr \u002F>\n* Pattern detection for Gutenberg blocks\u003Cbr \u002F>\n* Schema generation for Sanity Studio\u003Cbr \u002F>\n* Asset tracking and manifest\u003Cbr \u002F>\n* Command: \u003Ccode>wp scw-headless convert --cms=sanity\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Smart Pattern Detection:\u003C\u002Fstrong>\u003Cbr \u002F>\n* 12 core Gutenberg patterns\u003Cbr \u002F>\n* 28 Kadence Blocks patterns\u003Cbr \u002F>\n* XPath-based detection with confidence scoring\u003Cbr \u002F>\n* Priority-based matching for nested structures\u003Cbr \u002F>\n* Pattern inheritance system\u003C\u002Fp>\n\u003Cp>\u003Cstrong>CLI-First Experience:\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Ccode>wp scw-headless scan\u003C\u002Fcode> – View cached files\u003Cbr \u002F>\n* \u003Ccode>wp scw-headless analyze \u003Cfile>\u003C\u002Fcode> – Detect patterns\u003Cbr \u002F>\n* \u003Ccode>wp scw-headless convert --cms=sanity\u003C\u002Fcode> – Export to Sanity\u003Cbr \u002F>\n* \u003Ccode>wp scw-headless patterns\u003C\u002Fcode> – List registered patterns\u003Cbr \u002F>\n* \u003Ccode>wp scw-headless detectors\u003C\u002Fcode> – Show detector modules\u003Cbr \u002F>\n* \u003Ccode>wp scw-headless targets\u003C\u002Fcode> – List available CMS platforms\u003Cbr \u002F>\n* \u003Ccode>wp scw-headless info\u003C\u002Fcode> – Show plugin statistics\u003C\u002Fp>\n\u003Ch4>Future Roadmap Considerations\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Generic Portable Text Output:\u003C\u002Fstrong>\u003Cbr \u002F>\n* CMS-agnostic JSON format\u003Cbr \u002F>\n* Support for any Portable Text consumer\u003Cbr \u002F>\n* Command: \u003Ccode>wp scw-headless normalize\u003C\u002Fcode>\u003Cbr \u002F>\n* Non-WP analyzer and converter tooling\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Advanced Pattern Detection:\u003C\u002Fstrong>\u003Cbr \u002F>\n* 40+ patterns including Kadence Blocks\u003Cbr \u002F>\n* ACF field support (roadmap)\u003Cbr \u002F>\n* Page builder compatibility (roadmap)\u003Cbr \u002F>\n* Custom pattern registration\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Multi-CMS Support:\u003C\u002Fstrong>\u003Cbr \u002F>\n* Sanity (today)\u003Cbr \u002F>\n* Strapi (horizon)\u003Cbr \u002F>\n* Contentful (horizon)\u003Cbr \u002F>\n* Payload CMS (horizon)\u003Cbr \u002F>\n* Any Portable Text consumer (roadmap)\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwp2headless.com\u002F\" rel=\"nofollow ugc\">Learn more about planned features features\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Funding Model\u003C\u002Fstrong>\u003Cbr \u002F>\n* This plugin is 100% free (true WordPress style)\u003Cbr \u002F>\n* Want to make a donation? Consider purchasing a copy of the author’s book on command-line interfaces for yourself or as a gift.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fmoderncli.dev\" rel=\"nofollow ugc\">Modern CLI Book\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch4>Pattern Detection System\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Built-in Detector Modules:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Gutenberg Core\u003C\u002Fstrong> – 12 patterns:\u003Cbr \u002F>\n* heading, paragraph, image, gallery, video\u003Cbr \u002F>\n* list (ordered\u002Funordered), quote, code\u003Cbr \u002F>\n* button, buttons, separator, table\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Kadence Blocks\u003C\u002Fstrong> – 28 patterns:\u003Cbr \u002F>\n* accordion, tabs, advanced_button, progress_bar\u003Cbr \u002F>\n* icon_list, infobox, countdown, rowlayout\u003Cbr \u002F>\n* column, advanced_heading, form, testimonials\u003Cbr \u002F>\n* posts, table_of_contents, google_maps, lottie\u003Cbr \u002F>\n* image, video_popup, advanced_gallery, navigation\u003Cbr \u002F>\n* icon, spacer, show_more, search, identity\u003Cbr \u002F>\n* table, vector, countup\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Extensible via Filters:\u003C\u002Fstrong>\u003Cbr \u002F>\n    \u003Ccode>php\u003Cbr \u002F>\n\u002F\u002F Register custom patterns\u003Cbr \u002F>\nadd_action('stcw_headless_patterns_loaded', function() {\u003Cbr \u002F>\n    \\STCW\\Headless\\Engine\\Detector\\PatternRegistry::register('custom_block', [\u003Cbr \u002F>\n        'selectors' => ['.my-custom-block'],\u003Cbr \u002F>\n        'extractor' => [MyExtractor::class, 'extract'],\u003Cbr \u002F>\n        'priority' => 8,\u003Cbr \u002F>\n        'confidence' => 0.95,\u003Cbr \u002F>\n    ]);\u003Cbr \u002F>\n});\u003C\u002Fcode>\u003C\u002Fp>\n\u003Ch4>How It Works\u003C\u002Fh4>\n\u003Col>\n\u003Cli>\u003Cstrong>Cache your WordPress site\u003C\u002Fstrong> with Static Cache Wrangler  \u003C\u002Fli>\n\u003Cli>\u003Cstrong>Scan cached files:\u003C\u002Fstrong> \u003Ccode>wp scw-headless scan\u003C\u002Fcode>  \u003C\u002Fli>\n\u003Cli>\u003Cstrong>Analyze patterns:\u003C\u002Fstrong> \u003Ccode>wp scw-headless analyze \u002Fpage\u002F\u003C\u002Fcode>  \u003C\u002Fli>\n\u003Cli>\u003Cstrong>Convert:\u003C\u002Fstrong>\n\u003Cul>\n\u003Cli>Free: \u003Ccode>wp scw-headless convert --cms=sanity\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>Supported CMS Targets\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Included:\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Sanity CMS\u003C\u002Fstrong> – Full Portable Text conversion with schema generation\u003C\u002Fp>\n\u003Ch4>Perfect For\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Migrating WordPress content to headless CMS platforms  \u003C\u002Fli>\n\u003Cli>JAMstack architecture with WordPress as authoring tool  \u003C\u002Fli>\n\u003Cli>SEO component analysis\u003C\u002Fli>\n\u003Cli>UI pattern analysis\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Requirements\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>WordPress 6.0 or higher  \u003C\u002Fli>\n\u003Cli>PHP 7.4+ (PHP 8.x fully supported)  \u003C\u002Fli>\n\u003Cli>Static Cache Wrangler 2.0.5+ (must be installed and active)  \u003C\u002Fli>\n\u003Cli>WP-CLI recommended for best experience  \u003C\u002Fli>\n\u003Cli>Pattern Library Pro for enterprise features (optional)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Pattern Analysis\u003C\u002Fh3>\n\u003Cp>File: index.html (104 KB)\u003Cbr \u002F>\nPatterns Found: 71\u003C\u002Fp>\n\u003Cp>paragraph           20  Confidence: 1.00\u003Cbr \u002F>\nheading             15  Confidence: 1.00\u003Cbr \u002F>\nseparator           14  Confidence: 1.00\u003Cbr \u002F>\nkadence_button       6  Confidence: 0.90\u003Cbr \u002F>\nkadence_accordion    2  Confidence: 0.95\u003Cbr \u002F>\n…\u003C\u002Fp>\n\u003Cp>Confidence Distribution:\u003Cbr \u002F>\n  High (≥0.95):   60\u003Cbr \u002F>\n  Medium (0.85+): 11\u003Cbr \u002F>\n  Low (\u003C0.85):     0\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>\u003Ch4>How do I get support?\u003C\u002Fh4>\n\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Free users: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fderickschaefer\u002Fstcw-headless-assistant\u002Fissues\" rel=\"nofollow ugc\">GitHub Issues\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Documentation: \u003Ca href=\"https:\u002F\u002Fwp2headless.com\u002Fdocumentation\u002F\" rel=\"nofollow ugc\">wp2headless.com\u002Fdocs\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Why are some files showing as 140 B?\u003C\u002Fh4>\n\u003Cp>Static Cache Wrangler may create gzipped files or use compression. The plugin handles this automatically by reading the actual \u003Ccode>index.html\u003C\u002Fcode> files within cached directories.\u003C\u002Fp>\n\u003Ch3>Additional Information\u003C\u002Fh3>\n\u003Ch4>Architecture\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Engine Components:\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Scanner\u003C\u002Fstrong> – Finds cached HTML files\u003Cbr \u002F>\n* \u003Cstrong>Normalizer\u003C\u002Fstrong> – Cleans HTML while preserving structure\u003Cbr \u002F>\n* \u003Cstrong>Pattern Registry\u003C\u002Fstrong> – Centralized pattern definitions with inheritance\u003Cbr \u002F>\n* \u003Cstrong>Pattern Detector\u003C\u002Fstrong> – XPath-based pattern matching engine\u003Cbr \u002F>\n* \u003Cstrong>Extractors\u003C\u002Fstrong> – DOM-to-data conversion functions\u003Cbr \u002F>\n* \u003Cstrong>Parser\u003C\u002Fstrong> – Orchestrates normalization \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> detection \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> extraction\u003Cbr \u002F>\n* \u003Cstrong>Converter\u003C\u002Fstrong> – Transforms to target CMS format\u003Cbr \u002F>\n* \u003Cstrong>Target Registry\u003C\u002Fstrong> – Pluggable CMS target management\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Data Flow:\u003C\u002Fstrong>\u003Cbr \u002F>\n    \u003Ccode>Cached HTML \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Normalizer \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Pattern Detector \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Extractors \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Converter \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Export\u003C\u002Fcode>\u003C\u002Fp>\n\u003Ch4>Support\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Documentation: https:\u002F\u002Fwp2headless.com\u002Fdocumentation\u002F\u003C\u002Fli>\n\u003Cli>GitHub: https:\u002F\u002Fgithub.com\u002Fderickschaefer\u002Fstcw-headless-assistant\u003C\u002Fli>\n\u003Cli>Issues: https:\u002F\u002Fgithub.com\u002Fderickschaefer\u002Fstcw-headless-assistant\u002Fissues\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Roadmap\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>v2.2.0 (Q1 2026) – Quality Focus\u003C\u002Fstrong>\u003Cbr \u002F>\n* Improve semantic conversion to 85%+ (currently 74%)\u003Cbr \u002F>\n* Wire up remaining Kadence extractors (button, icon list, maps)\u003Cbr \u002F>\n* Enhance navigation menu handling\u003Cbr \u002F>\n* Add pattern detection validators\u003Cbr \u002F>\n* 80%+ test coverage\u003C\u002Fp>\n\u003Cp>\u003Cstrong>v2.3.0 (Q2 2026) – More Patterns\u003C\u002Fstrong>\u003Cbr \u002F>\n* Elementor widgets detection\u003Cbr \u002F>\n* Beaver Builder modules\u003Cbr \u002F>\n* ACF field mapping\u003Cbr \u002F>\n* Custom post type support\u003C\u002Fp>\n\u003Cp>\u003Cstrong>v2.5.0 (Q3 2026) – Multi-CMS\u003C\u002Fstrong>\u003Cbr \u002F>\n* TBD based on input, feedback, and demand\u003C\u002Fp>\n\u003Ch4>Contributing\u003C\u002Fh4>\n\u003Cp>Contributions welcome!\u003Cbr \u002F>\n* Additional CMS target implementations\u003Cbr \u002F>\n* Page builder detector modules\u003Cbr \u002F>\n* Pattern extraction improvements\u003Cbr \u002F>\n* Documentation and examples\u003Cbr \u002F>\n* Test coverage\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fderickschaefer\u002Fstcw-headless-assistant\u002Fblob\u002Fmain\u002FCONTRIBUTING.md\" rel=\"nofollow ugc\">Contribution Guidelines\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch4>Privacy Policy\u003C\u002Fh4>\n\u003Cp>This plugin does not collect, store, or transmit any user data. All conversion happens locally on your WordPress installation.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Data Storage:\u003C\u002Fstrong>\u003Cbr \u002F>\n* No external API calls\u003Cbr \u002F>\n* No analytics or tracking\u003Cbr \u002F>\n* No cookies used\u003Cbr \u002F>\n* Export files stored locally in WordPress uploads directory\u003Cbr \u002F>\n* License validation (Pattern Library Pro) stored in wp_options\u003C\u002Fp>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>GPL v2 or later – Copyright © 2024-2025 Derick Schaefer\u003C\u002Fp>\n\u003Cp>This program is free software; you can redistribute it and\u002For modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\u003C\u002Fp>\n\u003Ch3>Third-Party Trademark Notices\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Content Management Systems:\u003C\u002Fstrong>\u003Cbr \u002F>\nSanity® is a registered trademark of Sanity.io\u003Cbr \u002F>\nContentful® is a registered trademark of Contentful GmbH\u003Cbr \u002F>\nStrapi® is a registered trademark of Strapi Solutions SAS\u003Cbr \u002F>\nBuilder.io® is a registered trademark of Builder.io, Inc.\u003Cbr \u002F>\nDatoCMS® is a registered trademark of Dato srl\u003Cbr \u002F>\nPayload CMS® is a registered trademark of Payload CMS, Inc.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>WordPress Ecosystem:\u003C\u002Fstrong>\u003Cbr \u002F>\nWordPress® and Gutenberg® are registered trademarks of the WordPress Foundation\u003Cbr \u002F>\nWP-CLI® is a registered trademark of the WordPress Foundation\u003Cbr \u002F>\nKadence® and Kadence Blocks™ are trademarks of Kadence WP LLC\u003Cbr \u002F>\nElementor® is a registered trademark of Elementor Ltd.\u003Cbr \u002F>\nDivi® is a registered trademark of Elegant Themes, Inc.\u003Cbr \u002F>\nAdvanced Custom Fields® (ACF) is a registered trademark of WP Engine, Inc.\u003Cbr \u002F>\nWooCommerce® is a registered trademark of Automattic Inc.\u003Cbr \u002F>\nBeaver Builder® is a registered trademark of Beaver Builder\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Development Tools:\u003C\u002Fstrong>\u003Cbr \u002F>\nGitHub® is a registered trademark of GitHub, Inc.\u003Cbr \u002F>\nJSON™ is a trademark of JSON.org\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Content & Media:\u003C\u002Fstrong>\u003Cbr \u002F>\nYouTube® is a registered trademark of Google LLC\u003Cbr \u002F>\nLottie™ is a trademark of Airbnb, Inc.\u003Cbr \u002F>\nGoogle Maps™ is a trademark of Google LLC\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Project Attribution:\u003C\u002Fstrong>\u003Cbr \u002F>\nWP2Headless.com is owned by Derick Schaefer\u003Cbr \u002F>\nStatic Cache Wrangler is developed by Derick Schaefer\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Disclaimer:\u003C\u002Fstrong>\u003Cbr \u002F>\nThis plugin is not affiliated with, endorsed by, or sponsored by any of the trademark owners listed above. These names are referenced solely to describe compatibility, integration capabilities, or as examples of headless CMS platforms that may be used with exported content. The plugin has not been tested, approved, or certified by any of these companies or organizations.\u003C\u002Fp>\n","Convert Static Cache Wrangler HTML output to headless CMS import formats with pluggable architecture.","2026-01-22T02:30:00.000Z","6.0",[86,18,87,19,88],"cms","exporter","sanity","https:\u002F\u002Fmoderncli.dev\u002Fcode\u002Fstcw-headless-assistant\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fstcw-headless-assistant.2.1.0.zip",{"slug":92,"name":93,"version":94,"author":95,"author_profile":96,"description":97,"short_description":98,"active_installs":99,"downloaded":100,"rating":101,"num_ratings":102,"last_updated":103,"tested_up_to":65,"requires_at_least":15,"requires_php":16,"tags":104,"homepage":110,"download_link":111,"security_score":112,"vuln_count":113,"unpatched_count":11,"last_vuln_date":114,"fetched_at":25},"robin-image-optimizer","Robin Image Optimizer – Unlimited Image Optimization & WebP Converter","2.0.4","Themeisle","https:\u002F\u002Fprofiles.wordpress.org\u002Fthemeisle\u002F","\u003Cp>🚀 Make Your Website Faster by Reducing Image Weight\u003C\u002Fp>\n\u003Cp>Robin Image Optimizer is a WordPress image optimization plugin that can reduce image file size by up to 80% without visible quality loss. It helps speed up your site by compressing images, converting them to modern formats, and optimizing both new and existing images automatically.\u003C\u002Fp>\n\u003Cp>Robin Image Optimizer is a smart and advanced free image optimization plugin for WordPress, built with no limits on the number of images, no API keys, and no external CDN dependency. It works locally inside WordPress and supports automatic image optimization, bulk image optimization, and WebP conversion.\u003C\u002Fp>\n\u003Cp>Robin is built for site owners who want free image optimization, unlimited WebP conversion, and a simple, local solution that works directly inside WordPress.\u003C\u002Fp>\n\u003Ch3>At a Glance\u003C\u002Fh3>\n\u003Cp>📌 Unlimited image optimization (no limits)\u003Cbr \u002F>\n📌 Automatic optimization on image upload\u003Cbr \u002F>\n📌 Bulk optimization for existing media\u003Cbr \u002F>\n📌 WebP conversion (JPG, PNG, GIF)\u003Cbr \u002F>\n📌 Runs locally inside WordPress\u003Cbr \u002F>\n📌 No API keys, no external CDN\u003C\u002Fp>\n\u003Ch3>Quick Links\u003C\u002Fh3>\n\u003Cp>📘 \u003Ca href=\"https:\u002F\u002Fdocs.themeisle.com\u002Fcollection\u002F2413-robin-image-optimizer\" rel=\"nofollow ugc\">Documentation\u003C\u002Fa> – Complete setup and configuration guide\u003C\u002Fp>\n\u003Cp>💬 \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Frobin-image-optimizer\u002F\" rel=\"ugc\">Support Forum\u003C\u002Fa> – Community help and expert support\u003C\u002Fp>\n\u003Cp>⭐ \u003Ca href=\"https:\u002F\u002Frobinoptimizer.com\u002Fupgrade\u002F?utm_source=wordpressorg&utm_medium=readme&utm_campaign=robin_quicklinks\" rel=\"nofollow ugc\">Go Pro\u003C\u002Fa> – Unlock advanced features and priority support\u003C\u002Fp>\n\u003Ch3>What Robin Does\u003C\u002Fh3>\n\u003Cp>Robin improves WordPress performance by optimizing images throughout your entire workflow. Images are optimized automatically when they’re uploaded, and existing images in your media library can be optimized in bulk. This reduces manual work and keeps your site fast as it grows.\u003C\u002Fp>\n\u003Cp>By compressing images and converting them to modern formats like WebP, Robin helps reduce overall page size. This results in faster load times, better performance metrics, and a smoother user experience, especially on mobile devices and image-heavy pages.\u003C\u002Fp>\n\u003Cp>With Robin, you can:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>Automatically optimize images on upload\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Bulk optimize existing images in the media library\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Convert images to modern formats like WebP and AVIF in \u003Ca href=\"https:\u002F\u002Frobinoptimizer.com\u002Fupgrade\u002F?utm_source=wordpressorg&utm_medium=readme&utm_campaign=whatrobindoes\" rel=\"nofollow ugc\">PRO\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Reduce image weight and overall page size\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Improve loading speed and PageSpeed audits\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Run everything locally without API keys or CDN dependencies\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>This makes Robin a reliable choice for bloggers, content websites, and performance-focused WordPress sites.\u003C\u002Fp>\n\u003Ch3>Why Image Optimization Matters\u003C\u002Fh3>\n\u003Cp>⚡ The lighter the image, the faster your page loads.\u003C\u002Fp>\n\u003Cp>Images are often the most significant contributor to page size on WordPress websites. As mobile usage continues to grow, image optimization has become essential for delivering fast, responsive experiences.\u003C\u002Fp>\n\u003Cp>Unoptimized images can lead to:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>Slower page loads\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Higher bounce rates\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Poor ad and conversion performance\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Lower engagement on mobile devices\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Image optimization reduces image file size while preserving visual quality, helping pages load faster without sacrificing quality.\u003C\u002Fp>\n\u003Ch3>How Robin Optimizes Images\u003C\u002Fh3>\n\u003Cp>Robin analyzes each image and applies compression based on the selected optimization mode. Optimization happens automatically and safely, without blocking the WordPress admin interface or requiring manual intervention.\u003C\u002Fp>\n\u003Ch4>⚙️ Automatic Image Optimization\u003C\u002Fh4>\n\u003Cp>Images are optimized automatically as soon as they are uploaded to WordPress. No manual steps are required, and the optimization process runs quietly in the background.\u003Cbr \u002F>\nThis ensures that all new images added to your site are optimized by default, without interrupting your workflow.\u003C\u002Fp>\n\u003Ch4>📦 Bulk Image Optimization\u003C\u002Fh4>\n\u003Cp>Robin supports manual bulk optimization for images that already exist in the media library. With a single action, you can start optimizing previously uploaded images.\u003Cbr \u002F>\nThe optimization process runs in batches, making it suitable for large media libraries with thousands of images. This is especially useful for existing WordPress sites that want to reduce page size and improve performance without re-uploading content.\u003C\u002Fp>\n\u003Ch4>🎚️ Compression Modes\u003C\u002Fh4>\n\u003Cp>Robin provides multiple compression modes so you can choose how aggressively images are optimized.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>\u003Cstrong>Lossless compression:\u003C\u002Fstrong> Reduces image file size without any visible or measurable quality loss. Ideal for logos, illustrations, and high-fidelity images.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Lossy compression:\u003C\u002Fstrong> Applies stronger compression while keeping quality changes minimal and usually unnoticeable. A great default for most WordPress sites.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>High compression:\u003C\u002Fstrong> Uses more aggressive optimization techniques to achieve maximum file size reduction. Best for performance-focused and image-heavy pages.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>PageSpeed compression (\u003Ca href=\"https:\u002F\u002Frobinoptimizer.com\u002Fupgrade\u002F?utm_source=wordpressorg&utm_medium=readme&utm_campaign=compressionmode\" rel=\"nofollow ugc\">Pro\u003C\u002Fa>):\u003C\u002Fstrong> Applies optimization settings tuned specifically for improving PageSpeed and performance audits.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Custom compression:\u003C\u002Fstrong> Allows you to define your own quality level for full control over optimization behavior.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>🖼️ Modern Image Formats: WebP & AVIF\u003C\u002Fh4>\n\u003Cp>Robin converts supported image formats such as JPG, PNG, and GIF into WebP, a modern image format that produces smaller files while maintaining visual quality. WebP images are generated automatically when images are uploaded or optimized in bulk.\u003C\u002Fp>\n\u003Cp>Optimized WebP images are served automatically to browsers that support them. When a browser does not support WebP, Robin safely falls back to the original image format to ensure full compatibility across devices.\u003C\u002Fp>\n\u003Cp>WebP conversion is available in the free version of Robin with no limits on the number of images. Images are converted automatically and served in the best format supported by each browser.\u003C\u002Fp>\n\u003Cp>Robin free supports:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>JPG to WebP conversion\u003C\u002Fli>\n\u003Cli>PNG to WebP conversion\u003C\u002Fli>\n\u003Cli>GIF to WebP conversion\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Other common image formats used in WordPress are also supported, with automatic fallback to ensure compatibility across all browsers and devices.\u003C\u002Fp>\n\u003Cp>🏆 \u003Ca href=\"https:\u002F\u002Frobinoptimizer.com\u002Fupgrade\u002F?utm_source=wordpressorg&utm_medium=readme&utm_campaign=modernformat\" rel=\"nofollow ugc\">Robin Pro\u003C\u002Fa> adds support for AVIF, a next-generation image format that can deliver even smaller file sizes than WebP in many cases. Safe fallbacks are applied automatically.\u003C\u002Fp>\n\u003Ch4>💾 Image Backup and Restore\u003C\u002Fh4>\n\u003Cp>Before optimizing any image, Robin stores a backup of the original file. You can restore original images at any time or re-optimize them using different compression settings. This makes it safe to experiment with optimization modes without the risk of permanent changes.\u003C\u002Fp>\n\u003Ch4>🧾 Strip EXIF data\u003C\u002Fh4>\n\u003Cp>Robin allows you to choose whether EXIF metadata should be removed or preserved during image optimization. Removing EXIF metadata helps reduce image file size and improves privacy. Keeping EXIF metadata is useful for photography portfolios or workflows that rely on image data.\u003C\u002Fp>\n\u003Ch4>🔄 Background Image Optimization (\u003Ca href=\"https:\u002F\u002Frobinoptimizer.com\u002Fupgrade\u002F?utm_source=wordpressorg&utm_medium=readme&utm_campaign=bgimageoptimization\" rel=\"nofollow ugc\">PRO\u003C\u002Fa>)\u003C\u002Fh4>\n\u003Cp>Robin supports background image optimization, allowing images to be processed gradually over time without blocking the WordPress admin interface. Background optimization uses scheduled processing to continuously optimize images, preventing timeouts and performance issues when working with large image libraries or frequent uploads.\u003C\u002Fp>\n\u003Ch4>📁 Custom Folder Optimization (\u003Ca href=\"https:\u002F\u002Frobinoptimizer.com\u002Fupgrade\u002F?utm_source=wordpressorg&utm_medium=readme&utm_campaign=customfolder\" rel=\"nofollow ugc\">PRO\u003C\u002Fa>)\u003C\u002Fh4>\n\u003Cp>Robin can optimize images stored outside the WordPress Media Library, including images located in custom folders such as theme directories and plugin assets.\u003C\u002Fp>\n\u003Cp>This is useful for:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Custom WordPress themes\u003C\u002Fli>\n\u003Cli>Plugins with bundled image assets\u003C\u002Fli>\n\u003Cli>Performance-focused sites using custom directories\u003C\u002Fli>\n\u003Cli>Advanced or custom-built WordPress setups\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>WP CLI commands (\u003Ca href=\"https:\u002F\u002Frobinoptimizer.com\u002Fupgrade\u002F?utm_source=wordpressorg&utm_medium=readme&utm_campaign=wpcli\" rel=\"nofollow ugc\">PRO\u003C\u002Fa>)\u003C\u002Fh4>\n\u003Ch4>Commands\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>wp robin optimize \u003C\u002Fli>\n\u003Cli>wp robin stop \u003C\u002Fli>\n\u003Cli>wp robin status \u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Available scopes\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>media-library\u003C\u002Fli>\n\u003Cli>custom-folders\u003C\u002Fli>\n\u003Cli>nextgen\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Use Cases\u003C\u002Fh3>\n\u003Cp>Robin Image Optimizer fits naturally into a wide range of WordPress workflows, from small blogs to performance-focused websites.\u003C\u002Fp>\n\u003Ch4>📝 Blogs & Content Websites\u003C\u002Fh4>\n\u003Cp>Perfect for bloggers and content creators who upload images regularly and want automatic image optimization without manual work. Images are optimized on upload, keeping pages fast as content grows.\u003C\u002Fp>\n\u003Ch4>🖼️ Image-Heavy Pages & Media-Rich Sites\u003C\u002Fh4>\n\u003Cp>Ideal for galleries, portfolios, landing pages, and visual storytelling sites where images contribute heavily to page weight. Bulk optimization and higher compression modes help significantly reduce page size.\u003C\u002Fp>\n\u003Ch4>⚡ Performance-Focused WordPress Sites\u003C\u002Fh4>\n\u003Cp>Great for site owners focused on speed, Core Web Vitals, and PageSpeed audits. Optimized images and modern formats like WebP help improve loading performance across desktop and mobile.\u003C\u002Fp>\n\u003Ch4>🏗️ Existing WordPress Websites\u003C\u002Fh4>\n\u003Cp>Useful for established sites with large media libraries. Previously uploaded images can be optimized in bulk without re-uploading or rebuilding content.\u003C\u002Fp>\n\u003Ch4>🌍 Sites Without a CDN\u003C\u002Fh4>\n\u003Cp>A reliable solution for websites that don’t use a CDN. All image optimization and WebP conversion happen locally inside WordPress, with no external services or API keys required.\u003C\u002Fp>\n\u003Ch4>🧩 Custom Themes & Advanced Setups\u003C\u002Fh4>\n\u003Cp>Suitable for custom WordPress themes and advanced setups where images live outside the Media Library. Custom folder optimization allows full-site image optimization beyond standard uploads.\u003C\u002Fp>\n\u003Ch3>What Users Say About Robin\u003C\u002Fh3>\n\u003Cp>★★★★★\u003Cbr \u002F>\n\u003Cstrong>Excellent plugin\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>“I use Robin on all my WordPress sites. It’s easy to set up, effective, and really helps reduce loading times.”\u003C\u002Fp>\n\u003Cp>★★★★★\u003Cbr \u002F>\n\u003Cstrong>Great plugin\u003C\u002Fstrong>\u003Cbr \u002F>\n“A free image optimization plugin without image limits? Really impressive.”\u003C\u002Fp>\n\u003Cp>★★★★★\u003Cbr \u002F>\n\u003Cstrong>Don’t waste time on others\u003C\u002Fstrong>\u003Cbr \u002F>\n“This has to be the best free optimizer I’ve tried. Fast, simple, and very efficient.”\u003C\u002Fp>\n\u003Cp>★★★★★\u003Cbr \u002F>\n\u003Cstrong>Great plugin. Nice work\u003C\u002Fstrong>\u003Cbr \u002F>\n“Saves a lot of time and reduces disk space usage.”\u003C\u002Fp>\n\u003Cp>★★★★★\u003Cbr \u002F>\n\u003Cstrong>Thank you Robin Hood\u003C\u002Fstrong>\u003Cbr \u002F>\n“I tried many other image compression options — this one works best.”\u003C\u002Fp>\n\u003Ch3>Support\u003C\u002Fh3>\n\u003Cp>Need help? Open a new thread in the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Frobin-image-optimizer\u002F\" rel=\"ugc\">Support Forum\u003C\u002Fa>, and we’ll be happy to assist.\u003C\u002Fp>\n\u003Ch3>📘 Documentation\u003C\u002Fh3>\n\u003Cp>Discover how to make the most of Robin with our detailed and user-friendly \u003Ca href=\"https:\u002F\u002Fdocs.themeisle.com\u002Fcollection\u002F2413-robin-image-optimizer\" rel=\"nofollow ugc\">documentation\u003C\u002Fa>.\u003C\u002Fp>\n","Unlimited automatic image optimization for WordPress. Compress images, convert to WebP, and improve site speed without losing image quality.",100000,2076678,88,125,"2026-03-12T15:45:00.000Z",[105,106,107,108,109],"compress-images","image-optimier","image-optimization","unlimited-image-optimization","webp-converter","https:\u002F\u002Frobinoptimizer.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Frobin-image-optimizer.2.0.4.zip",98,2,"2026-02-04 19:32:21",{"slug":116,"name":117,"version":118,"author":119,"author_profile":120,"description":121,"short_description":122,"active_installs":123,"downloaded":124,"rating":125,"num_ratings":126,"last_updated":127,"tested_up_to":128,"requires_at_least":129,"requires_php":15,"tags":130,"homepage":134,"download_link":135,"security_score":23,"vuln_count":11,"unpatched_count":11,"last_vuln_date":24,"fetched_at":25},"disable-json-api","Disable REST API","1.8","Dave McHale","https:\u002F\u002Fprofiles.wordpress.org\u002Fdmchale\u002F","\u003Cp>The most comprehensive plugin for controlling access to the WordPress REST API!\u003C\u002Fp>\n\u003Cp>Works as a “set it and forget it” install. Just upload and activate, and the entire REST API will be inaccessible to your general site visitors.\u003C\u002Fp>\n\u003Cp>But if you do need to grant access to some endpoints, you can do that too. Go to the Settings page and you can quickly whitelist individual endpoints (or entire branches of endpoints) in the REST API.\u003C\u002Fp>\n\u003Cp>You can even do this on a per-user-role basis, so your unauthenticated users have one set of rules while WooCommerce customers have another while Subscribers and Editors and Admins all have their own. NOTE: Out of the box, all defined user roles will still be granted full access to the REST API until you choose to manage those settings.\u003C\u002Fp>\n\u003Cp>For most versions of WordPress, this plugin will return an authentication error if a user is not allowed to access an endpoint. For legacy support, WordPress 4.4, 4.5, and 4.6 use the provided \u003Ccode>rest_enabled\u003C\u002Fcode> filter to disable the entire REST API.\u003C\u002Fp>\n","Disable the use of the REST API on your website to site users. Now with User Role support!",90000,753897,96,38,"2023-09-14T00:26:00.000Z","6.3.8","4.9",[131,132,20,133,71],"admin","api","rest","http:\u002F\u002Fwww.binarytemplar.com\u002Fdisable-json-api","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fdisable-json-api.zip",{"attackSurface":137,"codeSignals":153,"taintFlows":165,"riskAssessment":166,"analyzedAt":174},{"hooks":138,"ajaxHandlers":149,"restRoutes":150,"shortcodes":151,"cronEvents":152,"entryPointCount":11,"unprotectedCount":11},[139,145],{"type":140,"name":141,"callback":142,"file":143,"line":144},"filter","template_redirect","override_template_with_json","src\\Template.php",25,{"type":140,"name":146,"callback":147,"file":143,"line":148},"application_password_is_api_request","__return_true",26,[],[],[],[],{"dangerousFunctions":154,"sqlUsage":155,"outputEscaping":157,"fileOperations":11,"externalRequests":11,"nonceChecks":11,"capabilityChecks":11,"bundledLibraries":164},[],{"prepared":11,"raw":11,"locations":156},[],{"escaped":11,"rawEcho":158,"locations":159},1,[160],{"file":161,"line":162,"context":163},"src\\output.php",14,"raw output",[],[],{"summary":167,"deductions":168},"The \"headless-converter\" plugin v1.0.6 exhibits a seemingly strong security posture based on the provided static analysis and vulnerability history. There are no identified entry points like AJAX handlers, REST API routes, or shortcodes that are exposed without authentication checks, and no dangerous functions or raw SQL queries were found. The absence of known CVEs and past vulnerabilities further suggests a well-maintained and secure codebase. This lack of historical issues and the absence of critical static analysis findings are positive indicators.\n\nHowever, a significant concern arises from the output escaping analysis. With 100% of outputs not being properly escaped, this plugin presents a clear risk of Cross-Site Scripting (XSS) vulnerabilities. While there are no identified taint flows or direct vulnerabilities in the current static analysis, an attacker could potentially inject malicious scripts through any output generated by the plugin if the input is not sanitized elsewhere or if there's an unforeseen interaction that leads to unsanitized data being outputted. The lack of any capability checks also means that even if an output is considered benign in some contexts, it might be accessible and exploitable by unauthenticated users if it's rendered inappropriately.\n\nIn conclusion, while the plugin avoids common pitfalls like raw SQL and external requests, the pervasive lack of output escaping is a critical weakness that overshadows its strengths. The vulnerability history is clean, but this does not mitigate the immediate risk posed by unescaped output. Developers should prioritize addressing the output escaping issue to prevent potential XSS attacks.",[169,172],{"reason":170,"points":171},"Output escaping is not properly handled",7,{"reason":173,"points":29},"No capability checks for entry points","2026-03-17T06:36:51.624Z",{"wat":176,"direct":187},{"assetPaths":177,"generatorPatterns":181,"scriptPaths":182,"versionParams":183},[178,179,180],"\u002Fwp-content\u002Fplugins\u002Fheadless-converter\u002Fassets\u002Fcss\u002Fstyle.css","\u002Fwp-content\u002Fplugins\u002Fheadless-converter\u002Fassets\u002Fjs\u002Fheadless-converter-admin.js","\u002Fwp-content\u002Fplugins\u002Fheadless-converter\u002Fassets\u002Fjs\u002Fheadless-converter.js",[],[179,180],[184,185,186],"headless-converter\u002Fassets\u002Fcss\u002Fstyle.css?ver=","headless-converter\u002Fassets\u002Fjs\u002Fheadless-converter-admin.js?ver=","headless-converter\u002Fassets\u002Fjs\u002Fheadless-converter.js?ver=",{"cssClasses":188,"htmlComments":189,"htmlAttributes":190,"restEndpoints":191,"jsGlobals":192,"shortcodeOutput":194},[],[],[],[],[193],"headlessConverterConfig",[]]