{"id":6608,"date":"2018-04-11T08:59:56","date_gmt":"2018-04-11T05:59:56","guid":{"rendered":"http:\/\/www.jmihai.ro\/blog\/?p=6608"},"modified":"2018-04-11T09:05:32","modified_gmt":"2018-04-11T06:05:32","slug":"teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api","status":"publish","type":"post","link":"https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/","title":{"rendered":"Teme mai bune cu ajutorul WordPress Theme Customization API"},"content":{"rendered":"<p>Articolul original a fost scris in engleza si publicat pe blogul <a href=\"https:\/\/infobest.ro\/\" target=\"_blank\" rel=\"noopener\">Infobest<\/a>: <a href=\"https:\/\/infobest.ro\/create-better-themes-using-wordpress-theme-customizer\/\" target=\"_blank\" rel=\"noopener\">Create Better Themes using WordPress Theme Customizer<\/a>. Se adreseaza celor care acum incep sa se joace cu WordPress Theme Customizer si vor sa isi creeze singuri controale. Ajuta daca ai ceva experienta in programare, dar nu e obligatorie &#8211; cat timp esti o persoana tehnica. Contine si linkuri catre documentatie. Enjoy!<\/p>\n<hr \/>\n<h4>0. Timp necesar pentru parcurgerea articolului: 5-8 minute<\/h4>\n<h4>1. <a href=\"#1\">Introducere: despre WordPress si WordPress Theme Customizer<\/a><\/h4>\n<h4>2. <a href=\"#2\">Avantajele utilizarii Customizer-ului<\/a><\/h4>\n<h4>3. <a href=\"#3\">WordPress Starter Themes &#8211; pentru a incepe mai usor<\/a><\/h4>\n<h4>4. <a href=\"#4\">Kirki Toolkit pentru development rapid<\/a><\/h4>\n<h4>5. <a href=\"#5\">Metologie: Organizarea controalelor si a Sectiunilor<\/a><\/h4>\n<h4>6. <a href=\"#6\">Concluzii<\/a><\/h4>\n<hr \/>\n<h3 id=\"1\">#1. Introducere: despre WordPress si WordPress Theme Customizer<\/h3>\n<p>WordPress este, probabil, cel mai popular CMS open source din lume, fiind folosit de 29% din web pentru dezvoltarea de diverse publicatii, incepand cu bloguri generaliste si terminand cu site-uri foarte mari de stiri. WordPress e usor de instalat &amp; configurat, oferind design personalizabil pana la un anumit punct (flexibilitatea layout-ului depinde foarte mult de tema pe care o folosesti) si o biblioteca imensa de module <span>(peste 45,000 de plugins \u2013\u00a0<\/span><a href=\"https:\/\/wordpress.org\/\" target=\"_blank\" rel=\"noopener\">conform site-ului oficial<\/a><span>). Fiind un CMS atat de popular, este si sprijinit de o comunitate puternica, este destul de sigur si in plus, este si Search Engine Friendly.<br \/>\n<\/span><\/p>\n<p><strong>WordPress Theme Customizer<\/strong><span>\u00a0<\/span> a fost introdus prima oara in versiunea <span>WordPress 3.4 si este o unealta foarte utila care iti permite sa previzualizezi (dar nu numai!) modificarile pe care le faci folosindu-te de caracteristicile temei. Aspectul asta, combinat cu un set te caracteristici introduse in versiunea 4.7 (de exemplu: user-specific backend language, custom CSS editing area, PDF Previews, REST API Content Endpoints &amp; Post Type Templates) fac WordPress sa fie un CMS foarte flexibil. Cu siguranta nu mai este doar o platforma de blogging, asa cum a inceput. Ba mai mult, sunt destul de increzator sa-i spun chiar \u201cWeb Application Framework\u201d. Chiar daca este inca o dezbatere aprinsa pe subiect, eu consider ca atat timp cat WordPress acopera zone precum accesul la baza de date &amp; mapping, caching, securitate, URL mapping (routing) se califica pentru numele de Application Framework. Poti sa creezi aplicatii mobile, folosindu-te de API endpoints ale WordPress? Cu ceva timp liber si plugins care sa integreze <a href=\"https:\/\/jwt.io\/\" target=\"_blank\" rel=\"noopener\">JWT<\/a>\u00a0or\u00a0<a href=\"https:\/\/oauth.net\/2\/\" target=\"_blank\" rel=\"noopener\">OAuth<\/a>\u00a0*, da, poti face asta! <\/span><\/p>\n<p><em>* o scurta mentiune aici &#8211; am mentionat JWT \/ OAuth presupunand ca aplicatia mobila pe care ai vrea sa o dezvolti ar avea nevoie de caracteristici de securitate \/ zone de user login.<\/em><\/p>\n<p>Ca sa ma intorc la subiectul articolului, <span>WordPress Theme Customizer<\/span> este o functionalitate foarte cool si un motiv foarte bun pentru a alege WordPress atunci cand vrei sa dezvolti site-uri de dimensiuni mici si medii. Daca folosesti o tema premium pe instanta ta de WordPress, atunci probabil ca deja ai o gramada de optiuni disponibile sub <span>Appearance &gt; Customize<\/span>, in panoul de administrare. Pe de alta parte, daca vrei sa iti dezvolti propria tema cu un design personalizat si sa te bucuri, totusi, de un editor flexibil din care sa poti sa schimbi logo, pozitionare meniuri, fonturi, culori sau alte stiluri ori ai vrea sa folosesti blocuri reutilizabile de continut, atunci dezvoltarea temei cu WordPress Theme Customizer e varianta ideala.<\/p>\n<h3>#2. Avantajele utilizarii Customizer-ului<\/h3>\n<p>Majoritatea informatiilor de care ai nevoie pentru a-ti crea propria tema de WordPress se poate obtine din\u00a0<a href=\"https:\/\/developer.wordpress.org\/themes\/customize-api\/\" target=\"_blank\" rel=\"noopener\">Theme Handbook<\/a>. Ai acolo inclusiv exemple de cod si <span>cele mai bune practici<\/span>. Rezumatul, insa, suna cam asa ceva: creezi niste controale care implementeaza setarile in tema si, optional, poti sa previzualizezi ce impact au respectivele modificari asupra designului. Faptul ca ai posibilitatea sa previzualizezi modificarile pe care doresti sa le faci inainte de a le &#8220;impinge&#8221; catre live e foarte util pentru site-urile de dimensiuni mici si mijlocii care au nevoie de actualizari rapide de design. Daca la tine in companie, de exemplu, ai un angajat in ale carui indatoriri intra si &#8220;intretinerea&#8221; website-ului, atunci dezvoltarea temei cu WordPress Theme Customizer ar permite acelui editor sa faca destul de multe in privinta layotului, culorilor, stilurilor etc. O astfel de solutie, bazata pe WordPress si WordPress Theme Customizer, permite editorului sa controleze nu doar continutul, dar si aspectul site-ului.<\/p>\n<p>Bineinteles, pentru a putea sa creezi o tema de WordPress folosindu-te de <span>WordPress Theme Customizer<\/span> ai nevoie de background tehnic si de o buna intelegere a cum functioneaza WordPress. Daca nu le ai si nici nu vrei sa-ti bati capul cu invatatul acum, atunci probabil ca e mai simplu sa apelezi la o companie de<span> <\/span><a href=\"https:\/\/infobest.ro\/software-technologies\/\" target=\"_blank\" rel=\"noopener\">software development<\/a> care sa creeze tema pentru tine, conform cerintelor tale, iar tu sa o folosesti.<\/p>\n<h3 id=\"3\">#3. WordPress Starter Themes &#8211; pentru a incepe mai usor<\/h3>\n<p>Daca totusi te-ai decis ca vrei sa mergi mai departe si sa incerci sa creezi o tema de WordPress folosind <span>Theme Customizer<\/span>, atunci primul lucru pe care cred ca ar trebui sa il faci e sa descarci o copie dintr-o &#8220;<span>starter theme<\/span>&#8220;. E mult mai usor sa lucrezi pe un <span>boilerplate, pentru ca nu mai e nevoie de petreci destul de mult timp cu generarea de fisiere si stabilirea unei structuri de a folderelor. Asta, plus faptul ca uneori e mai usor sa ai un proiect care iti indica deja ordinea fisierelor sau denumirea lor. Cateva teme starter pentru WordPress:<br \/>\n<\/span><\/p>\n<ul>\n<li><a href=\"https:\/\/underscores.me\/\" target=\"_blank\" rel=\"noopener\">_s (Underscores)<\/a><span>\u00a0<\/span>\u2013 poti sa folosesti direct site-ul pentru a genera o tema bazata de _s si poti sa te apuci de treaba imediat<\/li>\n<li><a href=\"https:\/\/roots.io\/sage\/\" target=\"_blank\" rel=\"noopener\">Sage<\/a><span>\u00a0<\/span>\u2013 by Roots \u2013 vine un un workflow avansat, minimal HTML5 templates si template inheritence cu un theme wrapper<\/li>\n<li><a href=\"http:\/\/html5blank.com\/\" target=\"_blank\" rel=\"noopener\">HTML5Blank<\/a><span>\u00a0<\/span>\u2013 open source boilerplate theme pentru WordPress<\/li>\n<li><a href=\"https:\/\/understrap.com\/\" target=\"_blank\" rel=\"noopener\">UnderStrap<\/a><span>\u00a0<\/span>\u2013 combina Underscores starter theme cu Bootstrap 4 intr-o fundatie open source pentru proiectul tau bazat pe WordPress<\/li>\n<\/ul>\n<p>O scurta mentiune aici, daca dupa ce ti-ai facut temele in vederea alegerii unei starter teme pe placul tau ai ramas cu Sage, atunci iti recomand calduros sa arunci o privire si peste <span>\u00a0<\/span><a href=\"https:\/\/roots.io\/bedrock\/\" target=\"_blank\" rel=\"noopener\">Bedrock<\/a>, care este un <span>WordPress boilerplate<\/span> cu o structura interesanta. Daca in trecut ai mai lucrat cu Laravel &#8211; de exemplu &#8211; atunci sigur vei recunoaste structura folderelor. Totodata, <span>Bedrock <\/span>vine cu <span>dependency management cu Composer, parole mai sigure cu wp-password-bcrypt si poate un workflow si un mediu de lucru care iti este ceva mai familiar. <\/span><\/p>\n<p>OK, revending la proiectul nostru, trebuie sa ne decidem asupra uneie teme starter. Pentru ca foloseste Bootstrap 4, eu am ales UnderStrap pentru acest mic ghid de initiere in <span>Theme Customizer, dar tu poti sa alegi orice varianta ti se pare mai interesanta. Inca o mentiune insa, UnderStrap are deja un customizer file pe care il poti folosi ca si model (se poate gasi in <span class=\"repo-root js-repo-root\"><span class=\"js-path-segment\">understrap<\/span><\/span><span class=\"separator\">\/<\/span><span class=\"js-path-segment\">inc<\/span><span class=\"separator\">\/<\/span><strong class=\"final-path\">customizer.php<\/strong>) sau poti sa arunci o privire pe \u00a0<a href=\"https:\/\/github.com\/holger1411\/understrap\/blob\/master\/inc\/customizer.php\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>, daca iti este mai usor asa. Ajuta, daca vrei sa te pui pe treaba imediat.\u00a0 Customizer.php este required in functions.php (pe care il poti gasi in root-ul temei, dar presupun ca stiai deja asta pana acum, nu?)<\/span><\/p>\n<h3 id=\"3-1\">#3.1. Sections, Settings &amp; Controls (Sectiuni, Setari &amp; Controale)<\/h3>\n<p>De indata ce ai baza creata <span>\u00a0(function naming +\u00a0<\/span><em>add_action<\/em><span>\u00a0hook)<\/span>, poti sa incepi sa adaugi Setari si Controale in fisierul tau. Trebuie mentionat ca toate Controalele trebuie &#8211; vizual &#8211; grupate sub <strong>Sectiuni<\/strong>.\u00a0 <span>In Appearance &gt; Customize menu ar trebui sa vezi deja niste Sectiuni cu cateva Controale.<\/span><\/p>\n<figure style=\"width: 347px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full\" src=\"https:\/\/i0.wp.com\/infobest.ro\/wp-content\/uploads\/2018\/01\/sections.jpg?resize=347%2C216&#038;ssl=1\" alt=\"Sections in WordPress Customizer\" width=\"347\" height=\"216\" \/><figcaption class=\"wp-caption-text\">Sections in WordPress Customizer<\/figcaption><\/figure>\n<p>O sa ne folosim acum de informatiile din Theme Handbook pentru a genera o Sectiune cu un Controler de culoare. In primul rand, lucram la Sectiune:<\/p>\n<hr \/>\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"php variable\">$wp_customize<\/code><code class=\"php plain\">-&gt;add_section( <\/code><code class=\"php string\">'theme_color_options'<\/code> <code class=\"php plain\">, <\/code><code class=\"php keyword\">array<\/code><code class=\"php plain\">(<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php string\">'title'<\/code> <code class=\"php plain\">=&gt; __( <\/code><code class=\"php string\">'Colors'<\/code><code class=\"php plain\">, <\/code><code class=\"php string\">'theme'<\/code> <code class=\"php plain\">),<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php string\">'description'<\/code> <code class=\"php plain\">=&gt; __(<\/code><code class=\"php string\">'Includes changes for base text'<\/code><code class=\"php plain\">),<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php string\">'priority'<\/code> <code class=\"php plain\">=&gt; 5,<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php string\">'capability'<\/code> <code class=\"php plain\">=&gt; <\/code><code class=\"php string\">'edit_theme_options'<\/code><code class=\"php plain\">,<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"php plain\">) );<\/code><\/div>\n<\/div>\n<hr \/>\n<p>&nbsp;<\/p>\n<p>Si in &#8220;interiorul&#8221; Sectiunii vrem sa adaugam un Control pentru culoarea de baza a textului &#8211; care probabil ca va fi utilizata pentru toate paragrafele de continut din zona &lt;body&gt;, de exemplu. Impreuna cu Controllerul, trebuie sa adaugam si o Setare (reprezentand &lt;the data&gt; pe care thema noastra trebuie sa o accepte si sa o utilizeze).<\/p>\n<p>&nbsp;<\/p>\n<hr \/>\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"php variable\">$wp_customize<\/code><code class=\"php plain\">-&gt;add_setting( <\/code><code class=\"php string\">'theme_general_text_color'<\/code> <code class=\"php plain\">, <\/code><code class=\"php keyword\">array<\/code><code class=\"php plain\">(<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php string\">'default'<\/code> <code class=\"php plain\">=&gt; <\/code><code class=\"php string\">'#000000'<\/code><code class=\"php plain\">,<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php string\">'transport'<\/code> <code class=\"php plain\">=&gt; <\/code><code class=\"php string\">'refresh'<\/code><code class=\"php plain\">,<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"php plain\">) );<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"php variable\">$wp_customize<\/code><code class=\"php plain\">-&gt;add_control(<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php keyword\">new<\/code> <code class=\"php plain\">WP_Customize_Color_Control(<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php variable\">$wp_customize<\/code><code class=\"php plain\">,<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php string\">'theme_general_text_color_control'<\/code><code class=\"php plain\">, <\/code><code class=\"php keyword\">array<\/code><code class=\"php plain\">(<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php string\">'label'<\/code> <code class=\"php plain\">=&gt; __( <\/code><code class=\"php string\">'Base text color'<\/code><code class=\"php plain\">, <\/code><code class=\"php string\">'theme'<\/code> <code class=\"php plain\">),<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php string\">'description'<\/code> <code class=\"php plain\">=&gt; __( <\/code><code class=\"php string\">'Used for all texts.'<\/code><code class=\"php plain\">, <\/code><code class=\"php string\">'theme'<\/code> <code class=\"php plain\">),<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php string\">'section'<\/code> <code class=\"php plain\">=&gt; <\/code><code class=\"php string\">'theme_color_options'<\/code><code class=\"php plain\">,<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php string\">'settings'<\/code> <code class=\"php plain\">=&gt; <\/code><code class=\"php string\">'theme_general_text_color'<\/code><code class=\"php plain\">,<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php string\">'priority'<\/code> <code class=\"php plain\">=&gt; 5,<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php plain\">)<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"php plain\">) );<\/code><\/div>\n<\/div>\n<hr \/>\n<p>&nbsp;<\/p>\n<p>Meniul din admin aflat sub Appearance &gt; Customize va afisa o noua Sectiune + un nou Controler care ar trebui sa contina niste zone de editare similare cu cele din imaginea de mai jos:<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full\" src=\"https:\/\/i0.wp.com\/infobest.ro\/wp-content\/uploads\/2018\/01\/sections-new-section.jpg?resize=345%2C260&#038;ssl=1\" width=\"345\" height=\"260\" \/><\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full\" src=\"https:\/\/i0.wp.com\/infobest.ro\/wp-content\/uploads\/2018\/01\/sections-new-control.jpg?resize=346%2C222&#038;ssl=1\" width=\"346\" height=\"222\" \/><\/p>\n<h3 id=\"3-2\">#3.2. Gruparea mai multor Sectiuni sub Panouri (Panels)<\/h3>\n<p>Daca ai de gand sa adaugi foarte multe Sectiuni si Controale, poti sa incerci sa faci curatenie in dashboard cu prin gruparea acestora sub Panouri. Poti sa citesti <a href=\"https:\/\/developer.wordpress.org\/themes\/customize-api\/customizer-objects\/#custom-controls-sections-and-panels\">mai multe despre Panouri aici<\/a>. Ca sa completez exemplul, daca ai avea mai multe controale care tin de culori sub o Sectiune numita &#8220;Culori&#8221;, mai multe controale care tin de layout sub o Sectiune numita &#8220;Layout&#8221; si controale de font sub o Sectiune T<span>ypography, ai putea sa grupezi toate aceste Sectiuni sub un Panou numit\u00a0 &#8220;Global&#8221; sau &#8220;General&#8221;, permitand astfel administratorilor sau editorilor site-ului sa navigheze cu usurinta prin zona de Customizer. Inregistrarea unui Panou se face foarte usor, dar odata ce ai creat codul pentru un Panou si doresti sa &#8220;muti&#8221; Sectiunile sub acesta, trebuie sa editezi si codul pentru Sectiuni. Vezi exemplul de mai jos:<br \/>\n<\/span><\/p>\n<p>&nbsp;<\/p>\n<hr \/>\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"php variable\">$wp_customize<\/code><code class=\"php plain\">-&gt;add_panel( <\/code><code class=\"php string\">'theme_global_panel'<\/code><code class=\"php plain\">, <\/code><code class=\"php keyword\">array<\/code><code class=\"php plain\">(<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php string\">'title'<\/code> <code class=\"php plain\">=&gt; <\/code><code class=\"php string\">'Global Settings'<\/code><code class=\"php plain\">,<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php string\">'description'<\/code> <code class=\"php plain\">=&gt; <\/code><code class=\"php string\">'Theme default panel'<\/code><code class=\"php plain\">,<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php string\">'priority'<\/code> <code class=\"php plain\">=&gt; 5,<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"php plain\">) );<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><\/div>\n<div class=\"line number8 index7 alt1\"><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"php variable\">$wp_customize<\/code><code class=\"php plain\">-&amp;gt;add_section( <\/code><code class=\"php string\">'theme_color_options'<\/code> <code class=\"php plain\">, <\/code><code class=\"php keyword\">array<\/code><code class=\"php plain\">(<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php string\">'title'<\/code> <code class=\"php plain\">=&gt; __( <\/code><code class=\"php string\">'Colors'<\/code><code class=\"php plain\">, <\/code><code class=\"php string\">'theme'<\/code> <code class=\"php plain\">),<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php string\">'description'<\/code> <code class=\"php plain\">=&gt; __(<\/code><code class=\"php string\">'Includes changes for base text'<\/code><code class=\"php plain\">),<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php string\">'priority'<\/code> <code class=\"php plain\">=&gt; 5,<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php string\">'capability'<\/code> <code class=\"php plain\">=&gt; <\/code><code class=\"php string\">'edit_theme_options'<\/code><code class=\"php plain\">,<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php string\">'panel'<\/code> <code class=\"php plain\">=&gt; <\/code><code class=\"php string\">'theme_global_panel'<\/code><code class=\"php plain\">,<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"php plain\">) );<\/code><\/div>\n<\/div>\n<hr \/>\n<p>&nbsp;<\/p>\n<p>Poti sa grupezi Sectiunile sub Panouri asa cum consideri ca e mai bine ori in functie de cum i-ar fi mai usor utilizatorului final sa navigheze in zona de Customizer, din cate am citit nu exista nicio limitare privind acest aspect. Dar daca vrei sa creezi o tema care sa fie usor de actualizat si mentinut, esti obligat sa tii codul curat. Asadar, ca si structura a folderelor si fisierelor, poti sa folosesti ceva de genul asta:<\/p>\n<p>&nbsp;<\/p>\n<hr \/>\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"php keyword\">function<\/code> <code class=\"php plain\">theme_customize_register( <\/code><code class=\"php variable\">$wp_customize<\/code> <code class=\"php plain\">) {<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"php comments\">\/\/All our panels, sections, settings, and controls will be added here<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php keyword\">include_once<\/code><code class=\"php plain\">(dirname( <\/code><code class=\"php constants\">__FILE__<\/code> <code class=\"php plain\">).<\/code><code class=\"php string\">'\/options\/options-global.php'<\/code><code class=\"php plain\">);<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php keyword\">include_once<\/code><code class=\"php plain\">(dirname( <\/code><code class=\"php constants\">__FILE__<\/code> <code class=\"php plain\">).<\/code><code class=\"php string\">'\/options\/options-layout.php'<\/code><code class=\"php plain\">);<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"php spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"php keyword\">include_once<\/code><code class=\"php plain\">(dirname( <\/code><code class=\"php constants\">__FILE__<\/code> <code class=\"php plain\">).<\/code><code class=\"php string\">'\/options\/options-header.php'<\/code><code class=\"php plain\">);<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"php plain\">}<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"php plain\">add_action( <\/code><code class=\"php string\">'customize_register'<\/code><code class=\"php plain\">, <\/code><code class=\"php string\">'theme_customize_register'<\/code> <code class=\"php plain\">);<\/code><\/div>\n<div>\n<\/div>\n<\/div>\n<hr \/>\n<p>Lucrurile pot ajunge, insa, se complice. Mai ales daca vrei ca acele Controale pe care le creezi sa aiba un anumit design. Iar atunci cand vrei sa faci output la CSS, de exemplu, trebuie sa tratezi codul cu foarte mare atentie, aspect care poate consuma mult timp. Pentru astfel de situatii (multe Sectiuni si Controale), mie mi-a fost foarte util Kirki si in continuare o sa poti sa citesti cate ceva despre acest toolkit.<\/p>\n<h3 id=\"4\">#4. Kirki Toolkit pentru development rapid<\/h3>\n<p><a href=\"http:\/\/aristath.github.io\/kirki\/\" target=\"_blank\" rel=\"noopener\">Kirki<\/a><span> <\/span>este un plugin 100% open source pentru WordPress care te ajuta sa imbunatatesti considerabil <span>Theme Customizer. Poti sa te uiti peste <a href=\"http:\/\/aristath.github.io\/kirki\/docs\/\" target=\"_blank\" rel=\"noopener\">documentatie aici<\/a> sau poti sa citesti <a href=\"http:\/\/aristath.github.io\/kirki\/docs\/integration\" target=\"_blank\" rel=\"noopener\">despre integrarea cu tema ta aici<\/a>. Background, checkbox, code, multicheck, slider sau sorter sunt cateva dintre Controalele pe care Kirki ti le pune la dispozitie pentru a imbunatati experienta utilizatorului atunci cand acesta foloseste Customizer. Daca vrei sa livrezi un proiect rapid, dar iti pasa de UX, atunci Kirki este o colectie de unelte foarte simpatica, iti va face placere sa o folosesti.<br \/>\n<\/span><\/p>\n<figure style=\"width: 690px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full\" src=\"https:\/\/i0.wp.com\/infobest.ro\/wp-content\/uploads\/2018\/01\/kirki-open-source-1024x391.jpg?resize=690%2C300&#038;ssl=1\" alt=\"Kirki Toolkit pentru WordPress\" width=\"690\" height=\"300\" \/><figcaption class=\"wp-caption-text\">Kirki Toolkit pentru WordPress<\/figcaption><\/figure>\n<h3 id=\"5\">#5. Metologie: Organizarea controalelor si a Sectiunilor<\/h3>\n<p>Atunci cand dezvolti proiecte &#8211; de exemplu HTML + CSS &#8211; e de preferat sa incerci sa urmezi o anumita metologie. Chiar daca uneori nu urmezi cap-coada regulile si le adaptezi in functie de proiectul pe care lucrezi, e foarte important sa ai cativa indicatori &#8220;de baza&#8221;. Chiar daca nu am folosit aceeasi metologie pentru toate proiectele la care am lucrat, regulile fac viata mai usoara cand ajungi la faza de intretinere ori cand lucrezi in echipa. Mie unuia mi se pare ca <a href=\"http:\/\/getbem.com\/introduction\/\" target=\"_blank\" rel=\"noopener\">BEM<\/a> e foarte cool pentru frontend development si foarte des folosesc indicatorii acestei metologii si pentru grupat Controale, Sectiuni si Panouri in WordPress. Spre exemplu, pentru o tema complexa in WP, probabil ca as ajunge, in final, cu o lista de Panouri care arata cam asa:<\/p>\n<ul>\n<li>Global<\/li>\n<li>Styles<\/li>\n<li>Header<\/li>\n<li>Layout<\/li>\n<li>Main Page<\/li>\n<li>Blog<\/li>\n<li>Footer<\/li>\n<li>Additional Features (aici poti include Woocommerce theme settings sau Custom Post Types theme settings, de exemplu)<\/li>\n<\/ul>\n<h3 id=\"6\">#6. Concluzii<\/h3>\n<p>Am ajuns si la sfarsitul acestui mic ghid de initiere in <span>Theme Customizer<\/span>. Ai parcurs rapid cateva exemple de utilizare a Sectiunilor, Controalelor si Setarilor, ai citit despre Panouri, ai aflat despre <span>Kirki Toolkit si ai primit o sugestie de organizare a elementelor de cod pentru atunci cand vei dori sa dezvolti o tema folosind WordPress Theme Customizer. Daca aceasta varianta de a dezvolta teme si site-uri ti se pare interesanta, poti sa citesti mai departe si despre <a href=\"https:\/\/developer.wordpress.org\/themes\/customize-api\/tools-for-improved-user-experience\/\" target=\"_blank\" rel=\"noopener\">ascunderea sectiunilor in functie de pagina pe care o previzualizezi<\/a> sau despre <a href=\"http:\/\/aristath.github.io\/kirki\/docs\/advanced\/register-control-types.html\" target=\"_blank\" rel=\"noopener\">intregistrarea unui nou tip de control<\/a>.<\/span><\/p>\n<p>Datorita comunitatii foarte mari, adaptarii rapide la standarde \u0219i practici noi, a API endpoints si a functionalitatilor flexibile pe care le ofera, Wordpess va ramane probabil cea mai populara solutie de CMS open source. Chiar daca pentru proiecte foarte ample, e mai sigur sa apelezi la o <a href=\"https:\/\/infobest.ro\" target=\"_blank\" rel=\"noopener\">companie de software development<\/a>, in foarte multe situatii WordPress este unealta perfecta, datorita flexibilitatii si vitezei de dezvoltare. Asadar, de ce sa nu folosesti aceste avantaje, daca proiectul este potrivit?<\/p>\n<p>Daca ai sugestii sau doresti sa aduci completari acestui articol, foloseste cu incredere zona de comentarii de mai jos.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Articolul original a fost scris in engleza si publicat pe blogul Infobest: Create Better Themes using WordPress Theme Customizer. Se adreseaza celor care acum incep sa se joace cu WordPress Theme Customizer si vor sa isi creeze singuri controale. Ajuta daca ai ceva experienta in programare, dar nu e obligatorie &#8211; cat timp esti o [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[433,5],"tags":[3806,3741,3805,657],"class_list":["post-6608","post","type-post","status-publish","format-standard","hentry","category-web-development","category-web-stuff","tag-api","tag-kirki-toolkit","tag-theme-customizer","tag-wordpress"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.1.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Teme mai bune cu ajutorul Wordpress Theme Customization API | J. Mihai<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Teme mai bune cu ajutorul Wordpress Theme Customization API | J. Mihai\" \/>\n<meta property=\"og:description\" content=\"Articolul original a fost scris in engleza si publicat pe blogul Infobest: Create Better Themes using WordPress Theme Customizer. Se adreseaza celor care acum incep sa se joace cu WordPress Theme Customizer si vor sa isi creeze singuri controale. Ajuta daca ai ceva experienta in programare, dar nu e obligatorie &#8211; cat timp esti o [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/\" \/>\n<meta property=\"og:site_name\" content=\"J. Mihai\" \/>\n<meta property=\"article:published_time\" content=\"2018-04-11T05:59:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-04-11T06:05:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/infobest.ro\/wp-content\/uploads\/2018\/01\/sections.jpg\" \/>\n<meta name=\"author\" content=\"Public User\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Public User\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/\",\"url\":\"https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/\",\"name\":\"Teme mai bune cu ajutorul Wordpress Theme Customization API | J. Mihai\",\"isPartOf\":{\"@id\":\"https:\/\/www.jmihai.ro\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/infobest.ro\/wp-content\/uploads\/2018\/01\/sections.jpg\",\"datePublished\":\"2018-04-11T05:59:56+00:00\",\"dateModified\":\"2018-04-11T06:05:32+00:00\",\"author\":{\"@id\":\"https:\/\/www.jmihai.ro\/blog\/#\/schema\/person\/6ddedb80babc3eb98d4c6ab852173494\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/#primaryimage\",\"url\":\"https:\/\/infobest.ro\/wp-content\/uploads\/2018\/01\/sections.jpg\",\"contentUrl\":\"https:\/\/infobest.ro\/wp-content\/uploads\/2018\/01\/sections.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.jmihai.ro\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Teme mai bune cu ajutorul WordPress Theme Customization API\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.jmihai.ro\/blog\/#website\",\"url\":\"https:\/\/www.jmihai.ro\/blog\/\",\"name\":\"J. Mihai\",\"description\":\"Dictionar de ganduri\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.jmihai.ro\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.jmihai.ro\/blog\/#\/schema\/person\/6ddedb80babc3eb98d4c6ab852173494\",\"name\":\"Public User\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.jmihai.ro\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/03dfa981de915c865b712a298eee9616e3867019e545ccb036e3b9e7f93ac280?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/03dfa981de915c865b712a298eee9616e3867019e545ccb036e3b9e7f93ac280?s=96&d=mm&r=g\",\"caption\":\"Public User\"},\"sameAs\":[\"http:\/\/www.jmihai.ro\"],\"url\":\"https:\/\/www.jmihai.ro\/blog\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Teme mai bune cu ajutorul Wordpress Theme Customization API | J. Mihai","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/","og_locale":"en_US","og_type":"article","og_title":"Teme mai bune cu ajutorul Wordpress Theme Customization API | J. Mihai","og_description":"Articolul original a fost scris in engleza si publicat pe blogul Infobest: Create Better Themes using WordPress Theme Customizer. Se adreseaza celor care acum incep sa se joace cu WordPress Theme Customizer si vor sa isi creeze singuri controale. Ajuta daca ai ceva experienta in programare, dar nu e obligatorie &#8211; cat timp esti o [&hellip;]","og_url":"https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/","og_site_name":"J. Mihai","article_published_time":"2018-04-11T05:59:56+00:00","article_modified_time":"2018-04-11T06:05:32+00:00","og_image":[{"url":"https:\/\/infobest.ro\/wp-content\/uploads\/2018\/01\/sections.jpg","type":"","width":"","height":""}],"author":"Public User","twitter_misc":{"Written by":"Public User","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/","url":"https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/","name":"Teme mai bune cu ajutorul Wordpress Theme Customization API | J. Mihai","isPartOf":{"@id":"https:\/\/www.jmihai.ro\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/#primaryimage"},"image":{"@id":"https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/#primaryimage"},"thumbnailUrl":"https:\/\/infobest.ro\/wp-content\/uploads\/2018\/01\/sections.jpg","datePublished":"2018-04-11T05:59:56+00:00","dateModified":"2018-04-11T06:05:32+00:00","author":{"@id":"https:\/\/www.jmihai.ro\/blog\/#\/schema\/person\/6ddedb80babc3eb98d4c6ab852173494"},"breadcrumb":{"@id":"https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/#primaryimage","url":"https:\/\/infobest.ro\/wp-content\/uploads\/2018\/01\/sections.jpg","contentUrl":"https:\/\/infobest.ro\/wp-content\/uploads\/2018\/01\/sections.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.jmihai.ro\/blog\/teme-mai-bune-cu-ajutorul-wordpress-theme-customization-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.jmihai.ro\/blog\/"},{"@type":"ListItem","position":2,"name":"Teme mai bune cu ajutorul WordPress Theme Customization API"}]},{"@type":"WebSite","@id":"https:\/\/www.jmihai.ro\/blog\/#website","url":"https:\/\/www.jmihai.ro\/blog\/","name":"J. Mihai","description":"Dictionar de ganduri","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jmihai.ro\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.jmihai.ro\/blog\/#\/schema\/person\/6ddedb80babc3eb98d4c6ab852173494","name":"Public User","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.jmihai.ro\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/03dfa981de915c865b712a298eee9616e3867019e545ccb036e3b9e7f93ac280?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/03dfa981de915c865b712a298eee9616e3867019e545ccb036e3b9e7f93ac280?s=96&d=mm&r=g","caption":"Public User"},"sameAs":["http:\/\/www.jmihai.ro"],"url":"https:\/\/www.jmihai.ro\/blog\/author\/admin\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2kN3v-1IA","_links":{"self":[{"href":"https:\/\/www.jmihai.ro\/blog\/wp-json\/wp\/v2\/posts\/6608","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jmihai.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jmihai.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jmihai.ro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jmihai.ro\/blog\/wp-json\/wp\/v2\/comments?post=6608"}],"version-history":[{"count":16,"href":"https:\/\/www.jmihai.ro\/blog\/wp-json\/wp\/v2\/posts\/6608\/revisions"}],"predecessor-version":[{"id":6655,"href":"https:\/\/www.jmihai.ro\/blog\/wp-json\/wp\/v2\/posts\/6608\/revisions\/6655"}],"wp:attachment":[{"href":"https:\/\/www.jmihai.ro\/blog\/wp-json\/wp\/v2\/media?parent=6608"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jmihai.ro\/blog\/wp-json\/wp\/v2\/categories?post=6608"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jmihai.ro\/blog\/wp-json\/wp\/v2\/tags?post=6608"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}