{"id":1372,"date":"2026-02-15T20:14:33","date_gmt":"2026-02-15T20:14:33","guid":{"rendered":"https:\/\/docs.ai.drawconclusions.org\/?page_id=1372"},"modified":"2026-02-24T12:45:48","modified_gmt":"2026-02-24T12:45:48","slug":"adr-0001-devdocs-wordpress-bulk-payload","status":"publish","type":"page","link":"https:\/\/docs.ai.drawconclusions.org\/?page_id=1372","title":{"rendered":"ADR-0001: DevDocs To WordPress Via Single Payload File"},"content":{"rendered":"<p>Date: 2026-02-15<\/p>\n<h2>Context<\/h2>\n<p>DevDocs are authored in this repo (<code>docs\/devdocs\/<\/code>) and published to a separate WordPress site. We want a simple pipeline with minimal moving parts and an exact mirror of the current DevDocs pages in WordPress.<\/p>\n<h2>Decision<\/h2>\n<ul>\n<li>A local Python script transforms all DevDocs markdown files into one prepared JSON payload file: <code>server\/var_www\/devdocs_wp\/wp_bulk_payload.json<\/code>.<\/li>\n<li>That prepared payload file is synced to the server at <code>\/var\/www\/devdocs_wp\/wp_bulk_payload.json<\/code>.<\/li>\n<li>A WordPress plugin imports the payload and makes WordPress match the payload:<\/li>\n<li>Create new pages if they do not exist yet.<\/li>\n<li>Update existing pages only if their per-page hash changed.<\/li>\n<li>Permanently delete pages that no longer exist in DevDocs (not trash).<\/li>\n<\/ul>\n<h2>Consequences<\/h2>\n<ul>\n<li>No server-side build scripts are needed.<\/li>\n<li>WordPress reads only the prepared payload file as input.<\/li>\n<li>Deletions are immediate and permanent; recovery requires restoring the source page and re-publishing.<\/li>\n<\/ul>\n<p class=\"developerdocs-id-search\" aria-hidden=\"true\">DeveloperDoc ID: dd_id_e5d4c3b2a1<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Date: 2026-02-15 Context DevDocs are authored in this repo (docs\/devdocs\/) and published to a separate WordPress site. We want a simple pipeline with minimal moving parts and an exact mirror of the current DevDocs pages in WordPress. Decision A local Python script transforms all DevDocs markdown files into one prepared JSON payload file: server\/var_www\/devdocs_wp\/wp_bulk_payload.json. That [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1357,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"doc_category":[],"doc_layer":[26],"class_list":["post-1372","page","type-page","status-publish","hentry","layer-dd_id_d920cc6a97"],"_links":{"self":[{"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=\/wp\/v2\/pages\/1372","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1372"}],"version-history":[{"count":5,"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=\/wp\/v2\/pages\/1372\/revisions"}],"predecessor-version":[{"id":3583,"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=\/wp\/v2\/pages\/1372\/revisions\/3583"}],"up":[{"embeddable":true,"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=\/wp\/v2\/pages\/1357"}],"wp:attachment":[{"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1372"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=%2Fwp%2Fv2%2Fdoc_category&post=1372"},{"taxonomy":"doc_layer","embeddable":true,"href":"https:\/\/docs.ai.drawconclusions.org\/index.php?rest_route=%2Fwp%2Fv2%2Fdoc_layer&post=1372"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}