{"id":116,"date":"2025-10-02T00:00:00","date_gmt":"2025-10-01T22:00:00","guid":{"rendered":"https:\/\/helloblog.io\/et\/null-seisakuga-wordpressi-deploy-trellisega-atomic-released-ja-kiire-rollback\/"},"modified":"2026-01-20T06:33:09","modified_gmt":"2026-01-20T05:33:09","slug":"null-seisakuga-wordpressi-deploy-trellisega-atomic-released-ja-kiire-rollback","status":"publish","type":"post","link":"https:\/\/helloblog.io\/et\/null-seisakuga-wordpressi-deploy-trellisega-atomic-released-ja-kiire-rollback\/","title":{"rendered":"Null-seisakuga WordPressi deploy Trellisega: atomic release\u2019id ja kiire rollback"},"content":{"rendered":"\n<p>WordPressi maailmas on \u201cdeploy\u201d liiga tihti s\u00fcnon\u00fc\u00fcm olukorrale, kus keegi l\u00fckkab failid serverisse ja loodab, et k\u00fclastajad ei satu t\u00e4pselt samal hetkel vale kombinatsiooni vana ja uue koodi otsa. Ka siis, kui kasutad Git\u2019i ja automatiseerid protsessi, j\u00e4\u00e4b paljudel setup\u2019idel \u00fcks p\u00f5hiprobleem: <em>failid kirjutatakse live\u2019is \u00fcle<\/em>.<\/p>\n\n\n\n<p>Roots\u2019i Trellis lahendab selle sama loogikaga, mida modernses rakenduste arenduses peetakse ammu standardiks: <strong>atomic deployment<\/strong> (atomaarne v\u00e4ljalase). Tulemus: kood deploy\u2019itakse eraldi \u201crelease\u2019i\u201d kausta, kontrollitakse\/ehitatakse valmis ja alles siis tehakse hetkeline \u00fcmberl\u00fclitus. K\u00fclastaja jaoks ei ole deploy akent, kus sait poolenisti katki oleks.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mis asi on \u201czero downtime deployment\u201d WordPressi kontekstis?<\/h2>\n\n\n\n<p>Null-seisakuga (zero downtime) deploy t\u00e4hendab, et sait p\u00fcsib kogu deploy protsessi ajal kasutatav: HTTP vastused tulevad, WordPress t\u00f6\u00f6tab ja kasutaja ei n\u00e4e \u201cvalget lehte\u201d, 500 vigu ega katkist fronti, mis tekib siis, kui server serveerib korraga vanu ja uusi faile l\u00e4bisegi.<\/p>\n\n\n\n<p>Oluline detail: Trellis saavutab selle <strong>koodibaasi<\/strong> tasemel. Andmebaasi skeemi muutused (migratsioonid) on eraldi teema ja vajavad teadlikku k\u00e4sitlust.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Miks klassikaline WordPressi deploy kipub katki minema?<\/h2>\n\n\n\n<p>Enamik WordPressi saite j\u00f5uab tootmisesse ikka \u00fche kolmest teest, mis k\u00f5ik jagavad sama n\u00f5rkust: live\u2019is kirjutatakse olemasolevad failid \u00fcle.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><strong>FTP \u00fcleslaadimine<\/strong>: aeglane ja \u201cakna\u201d jooksul serveeritakse segu vanast ja uuest. Kui tabad hetke, kus n\u00e4iteks \u00fcks PHP fail on uus, aga s\u00f5ltuv fail veel vana, on tulemus ettearvamatu.<\/li>\n\n\n<li><strong>Failide s\u00fcnk (nt <code>rsync<\/code>)<\/strong>: kiirem kui FTP, aga olemuselt sama \u2014 live\u2019i faile asendatakse j\u00e4rk-j\u00e4rgult.<\/li>\n\n\n<li><strong>Hosti\/plugin\u2019i-p\u00f5hine deploy<\/strong>: mugav, kuid tihti samuti in-place uuendus ilma selge rollback-mehhanismita.<\/li>\n\n<\/ul>\n\n\n\n<p>K\u00f5igi nende puhul on t\u00fc\u00fcpilised mured: deploy ajal v\u00f5ib sait ajutiselt katki olla, rollback on kas ebamugav v\u00f5i puudub ning probleemide korral hakkad k\u00e4sitsi \u201ctagasi kerima\u201d.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kuidas Trellis teeb atomic deploy: \u201crelease\u2019id + current symlink\u201d<\/h2>\n\n\n\n<p>Trellis kasutab atomic deployment strateegiat: iga deploy loob serverisse <strong>uue isoleeritud release\u2019i kataloogi<\/strong> ning live liiklus l\u00fclitatakse \u00fcmber \u00fche hetkega s\u00fcmboolse lingi (symlink) abil. Lisaks on see l\u00e4henemine <strong>immutable<\/strong>: deploy\u2019itud release\u2019i faile ei muudeta hiljem kohapeal.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">T\u00fc\u00fcpiline kataloogistruktuur serveris<\/h3>\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 aktiivsele release\u2019ile\n\u251c\u2500\u2500 releases\/            # K\u00f5ik deploy\u2019itud release\u2019id\n\u2502   \u251c\u2500\u2500 20250930124530\/\n\u2502   \u251c\u2500\u2500 20250930083045\/\n\u2502   \u2514\u2500\u2500 20250930141622\/  # K\u00f5ige v\u00e4rskem\n\u251c\u2500\u2500 shared\/              # Jagatud failid release\u2019ide vahel\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>\/srv\/www\/example.com\/<\/span><\/span>\n<span class=\"line\"><span>\u251c\u2500\u2500 current\/             # Symlink aktiivsele release\u2019ile<\/span><\/span>\n<span class=\"line\"><span>\u251c\u2500\u2500 releases\/            # K\u00f5ik deploy\u2019itud release\u2019id<\/span><\/span>\n<span class=\"line\"><span>\u2502   \u251c\u2500\u2500 20250930124530\/<\/span><\/span>\n<span class=\"line\"><span>\u2502   \u251c\u2500\u2500 20250930083045\/<\/span><\/span>\n<span class=\"line\"><span>\u2502   \u2514\u2500\u2500 20250930141622\/  # K\u00f5ige v\u00e4rskem<\/span><\/span>\n<span class=\"line\"><span>\u251c\u2500\u2500 shared\/              # Jagatud failid release\u2019ide vahel<\/span><\/span>\n<span class=\"line\"><span>\u2502   \u2514\u2500\u2500 uploads\/<\/span><\/span>\n<span class=\"line\"><span>\u2514\u2500\u2500 logs\/<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Siin on v\u00f5tmekohaks <code>current<\/code>. Web server (Nginx) serveerib alati <code>current<\/code> kataloogi. <code>current<\/code> ise ei sisalda \u201cp\u00e4ris faile\u201d, vaid osutab \u00fchele kindlale release\u2019ile <code>releases\/<\/code> all.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Mis toimub k\u00e4su <code>trellis deploy production<\/code> ajal?<\/h3>\n\n\n\n<p>Deploy ei t\u00e4henda Trellises \u201ckopeeri uued failid live\u2019i peale\u201d, vaid pigem \u201cvalmista uus release ette ja tee see aktiivseks\u201d.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li><strong>Initialize<\/strong>: kontrollitakse, et kataloogid\/struktuur on olemas ning luuakse uue timestamp\u2019iga release\u2019i kaust.<\/li>\n\n\n<li><strong>Update<\/strong>: uusim kood t\u00f5mmatakse Git repository\u2019st eraldi source-kausta (mitte live\u2019i).<\/li>\n\n\n<li><strong>Prepare<\/strong>: kood kopeeritakse uude release\u2019i kataloogi.<\/li>\n\n\n<li><strong>Build<\/strong>: k\u00e4ivitatakse <code>composer install<\/code>, et s\u00f5ltuvused tuleksid \u00f5igesse seisu.<\/li>\n\n\n<li><strong>Share<\/strong>: jagatud asjad (nt <code>uploads<\/code>) linkitakse <code>shared\/<\/code> alt uude release\u2019i.<\/li>\n\n\n<li><strong>Finalize<\/strong>: <code>current<\/code> symlink suunatakse uuele release\u2019ile. See on hetk, kus live liiklus \u201cl\u00fclitub \u00fcmber\u201d \u2014 praktiliselt koheselt.<\/li>\n\n<\/ol>\n\n\n\n<p>Kasutaja vaates on erinevus suur: \u00fchel hetkel teenindab sait n\u00e4iteks <code>releases\/20250930124530<\/code>, j\u00e4rgmisel hetkel <code>releases\/20250930141622<\/code>. Vahepealset \u201cpoolikut\u201d seisundit ei eksisteeri.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Andmebaas: mida Trellis ei tee sinu eest automaatselt<\/h2>\n\n\n\n<p>Trellise deploy katab koodi, kuid <strong>andmebaasi migratsioonid uuele skeemile ei kuulu automaatselt deploy protsessi<\/strong>. Trellise dokumentatsioon r\u00f5hutab seda selgelt: andmebaasi skeemi muutmine on eraldi vastutus.<\/p>\n\n\n\n<p>Kui kasutad Roots Acornit, saad WordPressi projektis kasutada <strong>Laravel migrations<\/strong>\u2019i (migratsioonid) l\u00e4henemist ning siduda nende k\u00e4ivitamise deploy protsessiga. See annab distsipliini, aga eeldab, et migratsioonid on kirjutatud \u201csafe deploy\u201d m\u00f5tteviisiga (tagasi\u00fchilduvus, j\u00e4rkj\u00e4rgulised muutused jne).<\/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\">Praktiline reegel<\/h4>\n\n\n<p>Zero downtime koodideploy ei t\u00e4henda automaatselt zero downtime skeemimuudatusi. Kui teed DB muudatusi, planeeri need nii, et vana ja uus kood suudaksid \u00fcleminekuperioodil koos eksisteerida v\u00f5i tee muudatus eraldi hooldusaknas.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Rollback on Trellises p\u00e4riselt kiire (ja seet\u00f5ttu kasutatav)<\/h2>\n\n\n\n<p>Atomic + immutable deploy\u2019i \u00fcks suurimaid v\u00f5ite on <strong>instant rollback<\/strong>. Kuna iga release on eraldi terviklik kaust ja seda p\u00e4rast deploy\u2019d ei \u201clapita\u201d, on tagasip\u00f6\u00f6rdumine sisuliselt symlinki \u00fcmber suunamine eelmisele release\u2019ile.<\/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>Vaikimisi hoiab Trellis serveris alles viis viimast release\u2019i, mis t\u00e4hendab, et sul on tavaliselt olemas nii \u201ceelmine t\u00f6\u00f6tav\u201d kui ka paar ajaloolist varianti.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Deploy hook\u2019id: kuidas lisada enda kontrollid ja j\u00e4reltegevused<\/h2>\n\n\n\n<p>Reaalses projektis ei piirdu deploy ainult <code>composer install<\/code>\u2019iga. Trellis pakub hook\u2019e (konksud) \u2014 kindlates sammudes k\u00e4ivitatavaid kohandusi \u2014 millega saad protsessi oma vajadustele vastavaks teha.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><code>deploy_build_before<\/code> \/ <code>deploy_build_after<\/code> \u2013 lisaehitused enne v\u00f5i p\u00e4rast build\u2019i.<\/li>\n\n\n<li><code>deploy_finalize_before<\/code> \/ <code>deploy_finalize_after<\/code> \u2013 tegevused vahetult enne v\u00f5i p\u00e4rast \u00fcmberl\u00fclitust.<\/li>\n\n\n<li>Hook\u2019id iga suure sammu jaoks: initialize, update, prepare, build, share, finalize.<\/li>\n\n<\/ul>\n\n\n\n<p>T\u00fc\u00fcpilised kasutusmustrid hook\u2019idega:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>tee andmebaasi backup enne \u00fcmberl\u00fclitust<\/li>\n\n\n<li>t\u00fchjenda cache (nt page cache, object cache) p\u00e4rast \u00fcmberl\u00fclitust<\/li>\n\n\n<li>saada deploy-notification Slacki\/Teamsi webhook\u2019i kaudu (webhook = HTTP callback endpoint, kuhu saad s\u00fcndmuse kohta POST\u2019i teha)<\/li>\n\n\n<li>k\u00e4ivita smoke test uue release\u2019i vastu enne, kui l\u00fclitad <code>current<\/code> symlinki \u00fcmber<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Kuidas alustada, kui sa ei taha Trellist \u201ck\u00f5igeks\u201d kasutada?<\/h2>\n\n\n\n<p>Trellise hea omadus on see, et sa ei pea seda tingimata kasutama kogu arendust\u00f6\u00f6voo vundamendina. Praktikas kasutatakse Trellist tihti <em>ainult deploy\u2019iks<\/em> Bedrocki-p\u00f5histe WordPressi saitide puhul, samal ajal kui lokaalne arendus k\u00e4ib muude t\u00f6\u00f6riistadega (nt Valet, Lando, DDEV).<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li>Sea projekt \u00fcles Roots <strong>Bedrock<\/strong>iga (m\u00f5istlikum struktuur ja s\u00f5ltuvuste haldus).<\/li>\n\n\n<li>Lisa <strong>Trellis<\/strong> ja defineeri keskkondade seaded.<\/li>\n\n\n<li>T\u00e4ida <code>wordpress_sites.yml<\/code> nii, et Trellis teaks sinu Git repository infot.<\/li>\n\n\n<li>K\u00e4ivita <code>trellis deploy production<\/code>.<\/li>\n\n<\/ol>\n\n\n\n<p>Esimene deploy v\u00f5tab reeglina kauem, sest serverisse tehakse struktuur ja t\u00f5mmatakse k\u00f5ik s\u00f5ltuvused. J\u00e4rgmised deploy\u2019d on kiiremad ning k\u00f5ige olulisem: sa ei pea enam planeerima deploy\u2019d \u201cvaiksemale ajale\u201d, sest failide \u00fclekirjutamisest tekkivat katkemise riski sisuliselt ei ole.<\/p>\n\n\n<div class=\"references-section\">\n                <h2>Viited \/ Allikad<\/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\">Deployments | Trellis 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 | Acorn Documentation<\/a><\/li><li><a href=\"https:\/\/roots.io\/bedrock\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bedrock<\/a><\/li><li><a href=\"https:\/\/roots.io\/trellis\/\" target=\"_blank\" rel=\"noopener noreferrer\">Trellis<\/a><\/li><li><a href=\"https:\/\/roots.io\" target=\"_blank\" rel=\"noopener noreferrer\">Roots<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>Kui sul on kunagi deploy ajal m\u00f5ni leht korraks \u201ckatki\u201d l\u00e4inud v\u00f5i vales versioonis faile serveerinud, siis atomic deployment on lihtsaim viis see probleem \u00e4ra l\u00f5petada. Trellis teeb null-seisakuga WordPressi deploy out-of-the-box \u2014 ka siis, kui sa ei kasuta Trellist kohaliku arenduse jaoks.<\/p>\n","protected":false},"author":49,"featured_media":115,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[67,71,72,70,9],"class_list":["post-116","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpressi-okosusteem","tag-bedrock","tag-deploy","tag-devops","tag-trellis","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/posts\/116","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/users\/49"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/comments?post=116"}],"version-history":[{"count":1,"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/posts\/116\/revisions"}],"predecessor-version":[{"id":132,"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/posts\/116\/revisions\/132"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/media\/115"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/media?parent=116"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/categories?post=116"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/tags?post=116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}