{"id":331915,"date":"2026-09-01T14:03:17","date_gmt":"2026-09-01T14:03:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/flx-headless\/"},"modified":"2026-09-01T14:02:48","modified_gmt":"2026-09-01T14:02:48","slug":"flx-headless","status":"publish","type":"plugin","link":"https:\/\/sna.wordpress.org\/plugins\/flx-headless\/","author":161177,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.0.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Flx Headless","header_author":"Rickey Gu","header_description":"Headless WordPress rendering for Pages, Posts, the blog index, category and tag archives, search results, and the 404 page through the Flx Render service, with automatic fallback to native WordPress rendering. Includes an admin settings screen and a REST health endpoint.","assets_banners_color":"","last_updated":"2026-09-01 14:02:48","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/flxheadless.com","header_author_uri":"https:\/\/github.com\/rickey29","rating":0,"author_block_rating":0,"active_installs":0,"downloads":60,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"rickey29","date":"2026-09-01 14:02:48","revision":3676251}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[181897,141196,17455],"plugin_category":[],"plugin_contributors":[153307],"plugin_business_model":[],"class_list":["post-331915","plugin","type-plugin","status-publish","hentry","plugin_tags-decoupled","plugin_tags-headless","plugin_tags-rendering","plugin_contributors-rickey29","plugin_committers-rickey29"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/flx-headless.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Flx Headless renders published WordPress Pages, single Posts, the blog index, category\narchives, tag archives, search results, and the 404 page through an external\nFlx Render service instead of WordPress's native template output. If the\nRender service is unreachable, returns an error, or a required field is\nmissing from the payload, Flx Headless falls back to normal WordPress rendering, so\nvisitors always see a page.<\/p>\n\n<p>Each route rendered through Flx Headless includes a page title, meta description,\ncanonical URL, and robots directive where applicable.<\/p>\n\n<p>Flx Headless also provides:<\/p>\n\n<ul>\n<li>An admin Flx Headless screen showing the plugin version, configured Render URL,\nREST namespace, health endpoint, global styles endpoint, and a Render URL setting.<\/li>\n<li>A public REST health endpoint at <code>\/wp-json\/flx-headless\/v1\/health<\/code>.<\/li>\n<li>A public REST endpoint at <code>\/wp-json\/flx-headless\/v1\/global-styles<\/code> serving\nWordPress's current computed Global Styles CSS.<\/li>\n<\/ul>\n\n<p>Menus, comments, and full-site rendering are not covered.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>Flx Headless renders Pages, Posts, the blog index, category and tag archives, search\nresults, and the 404 page by sending page data to an external Flx Render\nservice over HTTPS and displaying the HTML it returns. This is required for\nFlx Headless to function as a headless rendering integration.<\/p>\n\n<p>No data is sent anywhere until an administrator configures a Render URL \u2014\neither by entering one on the Flx Headless screen and saving it, or with\none click via the dismissible setup notice shown in wp-admin after\nactivation. Before a Render URL is configured, Flx Headless performs no external\nrequests and falls back to normal WordPress rendering.<\/p>\n\n<p>The Render URL is entirely administrator-controlled. It may point to any\nservice that implements the Flx Render API, including a self-hosted instance;\nFlx Headless does not require use of any specific provider.<\/p>\n\n<p>For each request that Flx Headless renders through the configured service, the\nfollowing data is sent, depending on the content being rendered:<\/p>\n\n<ul>\n<li>Post or page content, title, excerpt, slug, permalink, and featured image\nURL.<\/li>\n<li>Post or page ID, publish date, last modified date, and author display\nname.<\/li>\n<li>Site name and home URL.<\/li>\n<li>The search query text, for search result pages.<\/li>\n<li>Category or tag title and description, and paginated lists of the post\nfields above, for archive and search pages.<\/li>\n<\/ul>\n\n<p>No WordPress user account data, credentials, email addresses, or license\nkeys are transmitted to the Render service.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>flx-headless<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install\nthe plugin ZIP through the Plugins screen in wp-admin.<\/li>\n<li>Activate the plugin through the \"Plugins\" screen in WordPress.<\/li>\n<li>Go to Flx Headless and enter the URL of your Flx Render service.<\/li>\n<li>Visit any published Page on the front end to confirm it is being rendered\nthrough the Render service.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20content%20does%20flx%20headless%20render%3F\"><h3>Which content does Flx Headless render?<\/h3><\/dt>\n<dd><p>Published WordPress Pages, single Posts, the blog index, category archives,\ntag archives, search results, and the 404 page. Drafts, pending, and private\ncontent are not rendered through Flx Headless. Menus, comments, and full-site\nrendering are not covered.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20render%20service%20is%20unreachable%3F\"><h3>What happens if the Render service is unreachable?<\/h3><\/dt>\n<dd><p>Flx Headless automatically falls back to WordPress's native rendering for that request.\nNo configuration is required to enable this fallback.<\/p><\/dd>\n<dt id=\"does%20flx%20headless%20require%20woocommerce%3F\"><h3>Does Flx Headless require WooCommerce?<\/h3><\/dt>\n<dd><p>No. Flx Headless has no dependency on WooCommerce or any other plugin.<\/p><\/dd>\n<dt id=\"what%20is%20the%20default%20render%20url%20shown%20on%20the%20settings%20section%20of%20the%20flx%20headless%20screen%3F\"><h3>What is the default Render URL shown on the Settings section of the Flx Headless screen?<\/h3><\/dt>\n<dd><p>The Settings section of the Flx Headless screen shows <code>https:\/\/render.flxheadless.com<\/code> as placeholder text and\na suggested starting point. It is operated by the Flx project as a\nready-to-use Render service, and using it is entirely optional. The Render\nURL field is empty until an administrator enters and saves a value \u2014 no\ndata is sent to that or any other service automatically. After activation,\nFlx Headless also shows a dismissible setup notice in wp-admin offering to enable\nthis same service with one click; nothing is sent unless that click happens\nor a Render URL is saved manually on Settings \u2014 dismissing the notice sends\nnothing and leaves the Render URL empty. Administrators may use the\nsuggested service, run their own self-hosted Flx Render service, or point\nto any other service implementing the Flx Render API.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added featured image rendering to Pages and Posts, using WordPress's\nconfigured image, dimensions, and alt text.<\/li>\n<li>Fixed wide- and full-width block alignment so aligned content on Pages\nand Posts visibly extends beyond the normal content width.<\/li>\n<li>Removed a false claim from the site footer, and brought the 404 page's\nheading, message, and search field in line with native WordPress.<\/li>\n<li>Fixed password-protected Pages and Posts to correctly show WordPress's\nnative password prompt instead of being sent to the Render service.<\/li>\n<li>Fixed Page preview links to correctly show pending changes through\nWordPress instead of the previously published version through the\nRender service.<\/li>\n<li>Added optional cryptographic request signing between Flx Headless and\nthe Render service, for deployments that require it.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<li>Renders Pages, Posts, archives, search results, and the 404 page through a\nconfigured Flx Render service.<\/li>\n<li>Falls back automatically to native WordPress rendering when no Render\nservice is configured or available.<\/li>\n<li>Added an admin Flx Headless screen with Settings and System Information\nsections.<\/li>\n<li>Added a REST health endpoint.<\/li>\n<li>Included a translation template for localization.<\/li>\n<li>Documented external service usage and Render URL affiliation.<\/li>\n<li>Added a dismissible setup notice after activation offering to enable the\nhosted Render service with one click, without changing the no-data-sent-\nuntil-configured default.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Added rendering for single Posts, with the same Render-service-first,\nnative-fallback behavior as Pages (M4).<\/li>\n<li>Added rendering for the blog index, category archives, and tag archives\n(M5), including a fix to rewind the main query after building the archive\npayload (M5.1).<\/li>\n<li>Added rendering for WordPress search results (M6).<\/li>\n<li>Added rendering for the native WordPress 404 page (M7).<\/li>\n<li>Fixed site name propagation into rendered Pages and Posts (M7.1).<\/li>\n<li>Hardened the Render payload contract: required-field checks before calling\nRender, and consistent meta description handling for SEO (M7.6).<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Expanded rendering from the Sample Page only to all published WordPress\nPages (M3).<\/li>\n<li>Updated the Render payload to include page type, ID, slug, title,\npermalink, and filtered content.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Added Sample Page rendering through the Flx Render service, with automatic\nfallback to native WordPress rendering (M1\/M2).<\/li>\n<li>Updated plugin metadata, readme, and translations for WordPress.org\nsubmission readiness (M2.5).<\/li>\n<li>Wrapped remaining user-facing strings for translation.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial plugin skeleton: admin Overview and Settings pages, Render URL setting,\nand a REST health endpoint.<\/li>\n<\/ul>","raw_excerpt":"Headless rendering integration for WordPress, with automatic native fallback.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/331915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=331915"}],"author":[{"embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/rickey29"}],"wp:attachment":[{"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=331915"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=331915"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=331915"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=331915"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=331915"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=331915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}