{"id":136,"date":"2025-10-02T00:00:00","date_gmt":"2025-10-01T22:00:00","guid":{"rendered":"https:\/\/helloblog.io\/de\/zero-downtime-deployments-wordpress-trellis-atomic-releases-rollbacks-hooks\/"},"modified":"2026-01-20T06:32:38","modified_gmt":"2026-01-20T05:32:38","slug":"zero-downtime-deployments-wordpress-trellis-atomic-releases-rollbacks-hooks","status":"publish","type":"post","link":"https:\/\/helloblog.io\/de\/zero-downtime-deployments-wordpress-trellis-atomic-releases-rollbacks-hooks\/","title":{"rendered":"Zero-Downtime-Deployments f\u00fcr WordPress mit Trellis: Atomic Releases, Rollbacks und Hooks"},"content":{"rendered":"\n<p>Zero-Downtime-Deployments sind in vielen App-Stacks Standard \u2013 im WordPress-Alltag dagegen erstaunlich selten. Dabei ist das Grundproblem immer dasselbe: W\u00e4hrend eines Deployments \u00fcberschreibst du Dateien in einem laufenden System, und f\u00fcr ein paar Sekunden (oder Minuten) l\u00e4uft die Seite mit einem Mischzustand aus \u201ealt\u201c und \u201eneu\u201c. Trellis (aus dem Roots-\u00d6kosystem) bringt daf\u00fcr einen bew\u00e4hrten Ansatz mit: <strong>atomare Deployments<\/strong> (atomic deployments), bei denen ein Release komplett vorbereitet wird und erst dann per Symlink in einem Schritt live geht.<\/p>\n\n\n\n<p>Wichtig in der Praxis: Du musst Trellis nicht zwangsl\u00e4ufig als vollst\u00e4ndiges Provisioning- und Development-Framework einsetzen, um von diesem Deployment-Modus zu profitieren. Viele Teams nutzen Trellis gezielt f\u00fcrs Ausrollen von Bedrock-basierten Projekten \u2013 auch auf Managed Hosts \u2013 und bleiben lokal bei ihrem bevorzugten Setup (z. B. Valet, Lando, DDEV).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was \u201eZero Downtime\u201c bei WordPress Deployments konkret hei\u00dft<\/h2>\n\n\n\n<p>\u201eZero Downtime\u201c bedeutet hier nicht \u201ejede denkbare \u00c4nderung ist ohne Risiko\u201c, sondern sehr konkret: <strong>W\u00e4hrend des Deployments bleibt die Website durchgehend erreichbar und funktionsf\u00e4hig<\/strong>, weil es keinen Zeitraum gibt, in dem Besucher:innen eine Mischung aus alten und neuen Dateien serviert bekommen. Der Wechsel auf die neue Version passiert \u201einstant\u201c, also als atomarer Umschaltpunkt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Das klassische WordPress-Deployment-Problem<\/h2>\n\n\n\n<p>Viele WordPress-Deployments laufen (je nach Team und Hosting) immer noch \u00fcber Muster, die sich technisch \u00e4hnlich verhalten: Sie aktualisieren Dateien <strong>direkt im Live-Verzeichnis<\/strong>. Typische Varianten:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><strong>FTP-Uploads:<\/strong> \u00c4nderungen werden manuell hochgeladen und \u00fcberschreiben bestehende Dateien. W\u00e4hrenddessen entstehen Mischzust\u00e4nde, die zu PHP-Errors, fehlenden Assets oder kaputten Templates f\u00fchren k\u00f6nnen.<\/li>\n\n\n<li><strong>Sync via <code>rsync<\/code> o. \u00c4.:<\/strong> Schneller als FTP, aber im Kern dasselbe Problem: Dateien werden im laufenden Betrieb ersetzt.<\/li>\n\n\n<li><strong>Plugin-basierte Deployments bei Managed Hosts:<\/strong> Bequem, aber h\u00e4ufig ebenfalls \u201ein place\u201c \u2013 und oft ohne wirklich sauberen Rollback-Mechanismus auf Dateiebene.<\/li>\n\n<\/ul>\n\n\n\n<p>Gemeinsame Nebenwirkungen: Deployments sind fehleranf\u00e4llig, ein schneller R\u00fccksprung ist schwer, und im schlimmsten Fall sehen Nutzer:innen genau im falschen Moment einen kaputten Zustand.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wie Trellis das l\u00f6st: Atomic + Immutable Deployments<\/h2>\n\n\n\n<p>Trellis setzt auf eine Strategie, die du aus modernen Deployment-Setups kennst: Ein Release wird <strong>vollst\u00e4ndig in einem eigenen Verzeichnis aufgebaut<\/strong> und erst danach wird die aktive Version umgeschaltet. Zus\u00e4tzlich ist das Ganze <strong>immutable<\/strong> (unver\u00e4nderlich): Ein deployed Release wird nicht nachtr\u00e4glich im selben Ordner \u201eweiterbearbeitet\u201c, sondern bleibt genau so bestehen, wie es ausgerollt wurde.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Die Verzeichnisstruktur: Releases + current-Symlink<\/h3>\n\n\n\n<p>Auf dem Server arbeitet Trellis mit einer klaren Struktur aus Releases, einem <code>shared<\/code>-Bereich und einem <code>current<\/code>-Symlink. Der Webserver zeigt immer auf <code>current<\/code> \u2013 und <code>current<\/code> zeigt auf genau ein Release.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/srv\/www\/example.com\/\n\u251c\u2500\u2500 current\/             # Symlink auf das aktive Release\n\u251c\u2500\u2500 releases\/            # Alle deployten Releases\n\u2502   \u251c\u2500\u2500 20250930124530\/\n\u2502   \u251c\u2500\u2500 20250930083045\/\n\u2502   \u2514\u2500\u2500 20250930141622\/  # Neueste Version\n\u251c\u2500\u2500 shared\/              # Geteilte Dateien\/Ordner \u00fcber Releases hinweg\n\u2502   \u2514\u2500\u2500 uploads\/\n\u2514\u2500\u2500 logs\/\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#B392F0\">\/srv\/www\/example.com\/<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B392F0\">\u251c\u2500\u2500<\/span><span style=\"color:#9ECBFF\"> current\/<\/span><span style=\"color:#6A737D\">             # Symlink auf das aktive Release<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B392F0\">\u251c\u2500\u2500<\/span><span style=\"color:#9ECBFF\"> releases\/<\/span><span style=\"color:#6A737D\">            # Alle deployten Releases<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B392F0\">\u2502<\/span><span style=\"color:#9ECBFF\">   \u251c\u2500\u2500<\/span><span style=\"color:#9ECBFF\"> 20250930124530\/<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B392F0\">\u2502<\/span><span style=\"color:#9ECBFF\">   \u251c\u2500\u2500<\/span><span style=\"color:#9ECBFF\"> 20250930083045\/<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B392F0\">\u2502<\/span><span style=\"color:#9ECBFF\">   \u2514\u2500\u2500<\/span><span style=\"color:#9ECBFF\"> 20250930141622\/<\/span><span style=\"color:#6A737D\">  # Neueste Version<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B392F0\">\u251c\u2500\u2500<\/span><span style=\"color:#9ECBFF\"> shared\/<\/span><span style=\"color:#6A737D\">              # Geteilte Dateien\/Ordner \u00fcber Releases hinweg<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B392F0\">\u2502<\/span><span style=\"color:#9ECBFF\">   \u2514\u2500\u2500<\/span><span style=\"color:#9ECBFF\"> uploads\/<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B392F0\">\u2514\u2500\u2500<\/span><span style=\"color:#9ECBFF\"> logs\/<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Der entscheidende Punkt ist der <strong>Symlink-Wechsel<\/strong>: Statt Dateien im Live-Verzeichnis zu \u00fcberschreiben, wird <code>current<\/code> in einem Schritt auf das neue Release umgebogen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Was bei <code>trellis deploy production<\/code> passiert<\/h3>\n\n\n\n<p>Beim Deployment baut Trellis die neue Version komplett getrennt vom aktuell laufenden Release auf. Grob l\u00e4uft das in Phasen ab:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><strong>Initialize:<\/strong> Sicherstellen, dass die Struktur existiert; Anlegen eines neuen Release-Ordners (Timestamp).<\/li>\n\n\n<li><strong>Update:<\/strong> Code aus dem Git-Repository in eine tempor\u00e4re Source-Directory holen \u2013 getrennt vom Live-System.<\/li>\n\n\n<li><strong>Prepare:<\/strong> Dateien aus der Source in das neue Release kopieren.<\/li>\n\n\n<li><strong>Build:<\/strong> Abh\u00e4ngigkeiten installieren, typischerweise via <code>composer install<\/code>.<\/li>\n\n\n<li><strong>Share:<\/strong> Gemeinsame Verzeichnisse\/Dateien (z. B. Media Uploads) aus <code>shared<\/code> einh\u00e4ngen (symlinken).<\/li>\n\n\n<li><strong>Finalize:<\/strong> <code>current<\/code> wird auf das neue Release umgeschaltet.<\/li>\n\n<\/ul>\n\n\n\n<p>Damit gibt es keinen \u201eZwischenzustand\u201c. Gerade bei WordPress \u2013 wo Themes, Plugin-Code und Autoloading schnell voneinander abh\u00e4ngen \u2013 ist das der Unterschied zwischen \u201eDeployments als Routine\u201c und \u201eDeployments als Nervenkitzel\u201c.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wichtige Abgrenzung: Datenbank\u00e4nderungen sind ein eigenes Thema<\/h2>\n\n\n\n<p>Atomic Deployments l\u00f6sen das Problem auf Dateiebene. <strong>Datenbank-Migrationen<\/strong> (Schema-\u00c4nderungen) sind davon getrennt. Laut Trellis-Doku sind DB-Migrationen nicht automatisch Teil eines Trellis-Deployments. Das ist wichtig, weil du sonst zwar \u201esaubere\u201c Code-Releases hast, aber trotzdem eine Breaking Change in der DB einf\u00fchren k\u00f6nntest.<\/p>\n\n\n\n<p>Wenn du Acorn nutzt, kannst du dich an Laravel-Migrations orientieren und diese gezielt in den Deployment-Prozess integrieren. Der entscheidende Gedanke dabei: DB-\u00c4nderungen m\u00fcssen so geplant werden, dass sie mit Rollbacks und paralleler Kompatibilit\u00e4t umgehen k\u00f6nnen.<\/p>\n\n\n\n<div class=\"wp-block-group callout callout-warning is-style-warning is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Merksatz f\u00fcr die Praxis<\/h4>\n\n\n<p>Zero Downtime gilt zuverl\u00e4ssig f\u00fcr den Code-Release. Sobald eine Migration nicht r\u00fcckw\u00e4rtskompatibel ist, brauchst du zus\u00e4tzlich eine saubere Migrationsstrategie (z. B. expand\/contract), sonst wird das Deployment zwar \u201eatomar\u201c, aber nicht automatisch \u201erisikofrei\u201c.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Rollback in Sekunden: einer der gr\u00f6\u00dften Gewinne<\/h2>\n\n\n\n<p>Atomic + immutable hat einen extrem praktischen Nebeneffekt: <strong>Rollback ist kein \u201eRestore aus Backup\u201c, sondern ein Symlink-Switch<\/strong>. Wenn ein Release Probleme macht, zeigt <code>current<\/code> einfach wieder auf das vorherige Release.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>trellis rollback production\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#B392F0\">trellis<\/span><span style=\"color:#9ECBFF\"> rollback<\/span><span style=\"color:#9ECBFF\"> production<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Standardm\u00e4\u00dfig h\u00e4lt Trellis mehrere Releases auf dem Server (laut Quelle: f\u00fcnf). Das reicht in vielen Teams, um typische \u201eOops\u201c-Deployments sofort abzufangen, ohne erst Artefakte neu bauen zu m\u00fcssen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Deploy Hooks: der Weg zu \u201eProduction-ready\u201c Automatisierung<\/h2>\n\n\n\n<p>In der Realit\u00e4t endet ein gutes Deployment nicht beim Kopieren von Dateien. Trellis bringt daf\u00fcr Hooks (Ankn\u00fcpfungspunkte) mit, \u00fcber die du Aufgaben vor\/nach bestimmten Phasen einh\u00e4ngen kannst \u2013 etwa <code>deploy_build_before<\/code>, <code>deploy_build_after<\/code>, <code>deploy_finalize_before<\/code> und <code>deploy_finalize_after<\/code> sowie Hooks pro Hauptschritt.<\/p>\n\n\n\n<p>Damit lassen sich g\u00e4ngige Patterns sauber abbilden, z. B.:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Datenbank-Backups vor dem Umschalten erstellen<\/li>\n\n\n<li>Caches nach dem Deploy leeren (Object Cache, Page Cache, CDN Purge \u2013 je nach Setup)<\/li>\n\n\n<li>Benachrichtigungen an das Team senden (z. B. via Webhook) <\/li>\n\n\n<li>Smoke-Tests gegen das frisch gebaute Release ausf\u00fchren<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Ein pragmatischer Einstieg: Trellis nur f\u00fcrs Deployment nutzen<\/h2>\n\n\n\n<p>Wenn du vor allem die Deployments verbessern willst, kannst du Trellis als \u201eDeployment-Engine\u201c einsetzen, ohne dein lokales Setup zu ersetzen. Ein typischer Weg (wie im Roots-Stack h\u00e4ufig empfohlen) ist:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li>Projektstruktur mit <strong>Bedrock<\/strong> aufsetzen (sauberere Trennung, Composer-basierte Abh\u00e4ngigkeiten).<\/li>\n\n\n<li><strong>Trellis<\/strong> installieren und Deployment-Ziele konfigurieren.<\/li>\n\n\n<li><code>wordpress_sites.yml<\/code> so konfigurieren, dass Trellis dein Git-Repository als Quelle nutzen kann.<\/li>\n\n\n<li>Deployment ansto\u00dfen: <code>trellis deploy production<\/code>.<\/li>\n\n<\/ol>\n\n\n\n<p>Der erste Lauf dauert typischerweise l\u00e4nger, weil die Struktur angelegt und Dependencies installiert werden. Danach profitierst du vom Release-Ansatz \u2013 und vor allem vom Wegfall des \u201ein place\u201c-\u00dcberschreibens.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kurzfazit<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Trellis setzt bei WordPress auf <strong>atomare, unver\u00e4nderliche Releases<\/strong> statt Live-\u00dcberschreiben von Dateien.<\/li>\n\n\n<li>Der Wechsel passiert per <code>current<\/code>-Symlink und ist damit praktisch sofort \u2013 <strong>keine Mischzust\u00e4nde<\/strong>.<\/li>\n\n\n<li>Rollbacks sind dadurch schnell und unkompliziert (<code>trellis rollback<\/code>).<\/li>\n\n\n<li>Datenbank-Migrationen musst du separat planen; mit Acorn sind Laravel-artige Migrations m\u00f6glich.<\/li>\n\n\n<li>Hooks machen aus dem Standard-Deploy einen anpassbaren Prozess (Backups, Cache Purge, Smoke Tests etc.).<\/li>\n\n<\/ul>\n\n\n<div class=\"references-section\">\n                <h2>Referenzen \/ Quellen<\/h2>\n                <ul class=\"references-list\"><li><a href=\"https:\/\/roots.io\/zero-downtime-wordpress-deployments-with-trellis\/\" target=\"_blank\" rel=\"noopener noreferrer\">Zero Downtime WordPress Deployments with Trellis<\/a><\/li><li><a href=\"https:\/\/roots.io\/trellis\/docs\/deployments\/\" target=\"_blank\" rel=\"noopener noreferrer\">Trellis deployments documentation<\/a><\/li><li><a href=\"https:\/\/roots.io\/acorn\/docs\/creating-and-running-laravel-migrations\/\" target=\"_blank\" rel=\"noopener noreferrer\">Creating and running Laravel migrations<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>Wenn du WordPress noch \u201ein place\u201c aktualisierst, kennst du die kurzen Momente, in denen pl\u00f6tzlich Dateien nicht zusammenpassen. Trellis l\u00f6st genau dieses Problem mit atomaren Deployments und eingebautem Rollback \u2013 ohne dass du dein komplettes Setup umkrempeln musst.<\/p>\n","protected":false},"author":10,"featured_media":135,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[68],"tags":[65,70,71,69,10],"class_list":["post-136","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-infrastruktur","tag-bedrock","tag-deployment","tag-devops","tag-trellis","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/de\/wp-json\/wp\/v2\/posts\/136","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/de\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/de\/wp-json\/wp\/v2\/comments?post=136"}],"version-history":[{"count":1,"href":"https:\/\/helloblog.io\/de\/wp-json\/wp\/v2\/posts\/136\/revisions"}],"predecessor-version":[{"id":152,"href":"https:\/\/helloblog.io\/de\/wp-json\/wp\/v2\/posts\/136\/revisions\/152"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/de\/wp-json\/wp\/v2\/media\/135"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/de\/wp-json\/wp\/v2\/media?parent=136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/de\/wp-json\/wp\/v2\/categories?post=136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/de\/wp-json\/wp\/v2\/tags?post=136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}