{"id":229372,"date":"2022-11-17T11:47:00","date_gmt":"2022-11-17T08:47:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229372"},"modified":"2022-11-09T06:43:44","modified_gmt":"2022-11-09T03:43:44","slug":"szablony-wordpress-dla-poczatkujacych-drewno","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/szablony-wordpress-dla-poczatkujacych-drewno\/","title":{"rendered":"Szablony WordPress dla pocz\u0105tkuj\u0105cych: drewno"},"content":{"rendered":"\n<p>Od czasu, gdy m\u00f3wi\u0119 o szablonach WordPress, om\u00f3wi\u0142em kilka r\u00f3\u017cnych dost\u0119pnych silnik\u00f3w:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/viniwrubleski\/jade-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Jade-PHP<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/cjonasw\/wordpress-starter-theme-mustache\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">W\u0105sy<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/zach-adams\/sprig-foundation\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Ga\u0142\u0105zka<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/jenssegers\/blade\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Ostrze<\/a><\/li>\n<\/ul>\n<p>Je\u015bli patrzysz na W\u0105sy, by\u0107 mo\u017ce zainteresuje Ci\u0119 Kierownica, a je\u015bli patrzysz na Blade, gor\u0105co polecam sprawdzenie <a href=\"https:\/\/roots.io\/sage\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Sage<\/a> z zespo\u0142u <a href=\"https:\/\/roots.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Roots<\/a>.<\/p>\n<p>Ale w tym ostatnim po\u015bcie zamierzam kontynuowa\u0107 z Timberem, co przedstawi\u0142em wczoraj. Nie chodzi mi tak bardzo o to, co jest u\u017cywane (poniewa\u017c wszystkie maj\u0105 swoje kompromisy), o ile jest to sp\u00f3jne.<\/p>\n<h2>Szablony WordPress: Korzystanie z drewna<\/h2>\n<p>Maj\u0105c to na uwadze, oto jak mo\u017cesz zacz\u0105\u0107 u\u017cywa\u0107 <a href=\"https:\/\/www.upstatement.com\/timber\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Timber<\/a> w swoich projektach.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ec006741.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ec006741.png\" alt=\"Szablony WordPress dla pocz\u0105tkuj\u0105cych: drewno\" ><\/a><\/p>\n<p>Aby rozpocz\u0105\u0107, musisz zna\u0107 Composer i mie\u0107 konfiguracj\u0119 lokalnego \u015brodowiska programistycznego. Je\u015bli nie masz \u017cadnego z nich lub potrzebujesz pomocy, mam dla Ciebie ochron\u0119:<\/p>\n<ol>\n<li><a href=\"https:\/\/tommcfarlin.com\/laravel-valet-for-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Korzystanie z Laravela do programowania WordPress<\/a><\/li>\n<li><a href=\"https:\/\/tommcfarlin.com\/tag\/configuring-composer-for-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Konfiguracja Composera dla WordPress<\/a><\/li>\n<\/ol>\n<p>Po przej\u015bciu krok\u00f3w opisanych w ka\u017cdym z tych przewodnik\u00f3w powiniene\u015b by\u0107 gotowy. Oto, co zamierzamy zrobi\u0107.<\/p>\n<h3>1 Skonfiguruj lokaln\u0105 instalacj\u0119 dla drewna<\/h3>\n<p>B\u0119d\u0119 do tego u\u017cywa\u0142 Valeta, co oznacza, \u017ce \u200b\u200bb\u0119d\u0119 mia\u0142 katalog z najnowsz\u0105 wersj\u0105 <a href=\"https:\/\/wordpress.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPressa<\/a> (czyli 4.8.3) zainstalowan\u0105 w jego katalogu.<\/p>\n<p>Oznacza to, \u017ce b\u0119d\u0119 mie\u0107 baz\u0119 danych ju\u017c gotow\u0105 do pracy:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ec4380aa.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ec4380aa.png\" alt=\"Szablony WordPress dla pocz\u0105tkuj\u0105cych: drewno\" ><\/a><\/p>\n<p>Wydam nast\u0119puj\u0105ce polecenia, aby skonfigurowa\u0107 Laravela i bezpieczn\u0105 instalacj\u0119 (aby na\u015bladowa\u0107 \u015brodowisko pomostowe):<\/p>\n<pre><code>$ valet link\n$ valet secure<\/code><\/pre>\n<p>Abym m\u00f3g\u0142 uzyska\u0107 dost\u0119p do witryny w przegl\u0105darce.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ec7806b6.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ec7806b6.png\" alt=\"Szablony WordPress dla pocz\u0105tkuj\u0105cych: drewno\" ><\/a><\/p>\n<p>Dla ciekawskich u\u017cywam:<\/p>\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress<\/a> 4.8.3<\/li>\n<li><a href=\"https:\/\/wordpress.org\/themes\/twentyfifteen\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dwadzie\u015bcia pi\u0119tna\u015bcie<\/a><\/li>\n<li>Wyczy\u015b\u0107 permalinki<\/li>\n<\/ul>\n<p>I \u017cadnych innych wtyczek. To tylko waniliowa instalacja inna ni\u017c ta, kt\u00f3r\u0105 widzisz powy\u017cej.<\/p>\n<p>W tym momencie jestem gotowy do zainstalowania Timber.<\/p>\n<h3>2 Instalacja drewna<\/h3>\n<p>Zak\u0142adaj\u0105c, \u017ce post\u0119powa\u0142e\u015b zgodnie z powy\u017cszymi wskaz\u00f3wkami dla Valeta i Composera, powiniene\u015b by\u0107 gotowy. Korzystaj\u0105c z terminala, przejd\u017a do katalogu instalacyjnego WordPress.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ecb7040b.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ecb7040b.png\" alt=\"Szablony WordPress dla pocz\u0105tkuj\u0105cych: drewno\" ><\/a><\/p>\n<p>Nast\u0119pnie wydaj nast\u0119puj\u0105ce polecenie:<\/p>\n<pre><code>$ composer require timber\/timber<\/code><\/pre>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ece8223b.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ece8223b.png\" alt=\"Szablony WordPress dla pocz\u0105tkuj\u0105cych: drewno\" ><\/a><\/p>\n<p>Spowoduje to zainstalowanie Timber, ale nadal b\u0119dziesz musia\u0142 zaktualizowa\u0107 plik functions.php swojego motywu, aby poprawnie u\u017cywa\u0142 autoloadera Composera.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ed28264d.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ed28264d.png\" alt=\"Szablony WordPress dla pocz\u0105tkuj\u0105cych: drewno\" ><\/a><\/p>\n<p>Zak\u0142adaj\u0105c, \u017ce wszystko posz\u0142o poprawnie, powiniene\u015b by\u0107 w stanie od\u015bwie\u017cy\u0107 swoj\u0105 witryn\u0119, przej\u015b\u0107 do dowolnych post\u00f3w, stron itd. i nic nie powinno by\u0107 niesprawne.<\/p>\n<h3>3 Inicjalizacja drewna<\/h3>\n<p>Wreszcie nadszed\u0142 czas, aby u\u017cy\u0107 Timber, aby zast\u0105pi\u0107 wi\u0119kszo\u015b\u0107 tego, do czego przywykli\u015bmy w kontek\u015bcie szablonu WordPress.<\/p>\n<p>Zdecydowa\u0142em si\u0119 zrobi\u0107 to w <strong>content-page.php<\/strong>, aby u\u0142atwi\u0107 \u015bledzenie. Zauwa\u017c, \u017ce segment kodu, kt\u00f3ry zmieniam oryginalnie <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2c02b22272f645076f7f735bd61a4034#file-04-content-page-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wygl\u0105da tak:<\/a><\/p>\n<pre><code>&lt;article id=\"post-&lt;?php the_ID(); ?&gt;\" &lt;?php post_class(); ?&gt;&gt;\n    &lt;?php\n        \/\/ Post thumbnail.\n        twentyfifteen_post_thumbnail();\n    ?&gt;\n\n    &lt;header class=\"entry-header\"&gt;\n        &lt;?php the_title( '&lt;h1 class=\"entry-title\"&gt;', '&lt;\/h1&gt;' ); ?&gt;\n    &lt;\/header&gt;&lt;!-- .entry-header --&gt;\n\n    &lt;div class=\"entry-content\"&gt;\n        &lt;?php the_content(); ?&gt;\n        &lt;?php\n            wp_link_pages( array(\n                'before'      =&gt; '&lt;div class=\"page-links\"&gt;&lt;span class=\"page-links-title\"&gt;'. __( 'Pages:', 'twentyfifteen' ). '&lt;\/span&gt;',\n                'after'       =&gt; '&lt;\/div&gt;',\n                'link_before' =&gt; '&lt;span&gt;',\n                'link_after'  =&gt; '&lt;\/span&gt;',\n                'pagelink'    =&gt; '&lt;span class=\"screen-reader-text\"&gt;'. __( 'Page', 'twentyfifteen' ). ' &lt;\/span&gt;%',\n                'separator'   =&gt; '&lt;span class=\"screen-reader-text\"&gt;, &lt;\/span&gt;',) );\n        ?&gt;\n    &lt;\/div&gt;&lt;!-- .entry-content --&gt;\n\n    &lt;?php edit_post_link( __( 'Edit', 'twentyfifteen' ), '&lt;footer class=\"entry-footer\"&gt;&lt;span class=\"edit-link\"&gt;', '&lt;\/span&gt;&lt;\/footer&gt;&lt;!-- .entry-footer --&gt;' ); ?&gt;\n\n&lt;\/article&gt;&lt;!-- #post-## --&gt;<\/code><\/pre>\n<p>W tym po\u015bcie nie zamierzam ca\u0142kowicie odtwarza\u0107 tego, co widzisz powy\u017cej, ale zaczn\u0119 od tego, co jest potrzebne, aby zacz\u0105\u0107 u\u017cywa\u0107 silnika szablon\u00f3w w kontek\u015bcie podstawy PHP.<\/p>\n<p>Najpierw b\u0119dziesz musia\u0142 stworzy\u0107 szablon, kt\u00f3ry mo\u017cna zastosowa\u0107 do przyk\u0142adowej strony w standardowej instalacji WordPressa. Zadzwoni\u0142em do mojego <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2c02b22272f645076f7f735bd61a4034#file-05-template-timber-page-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">template-timber-page.php<\/a> i wygl\u0105da to tak:<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Template Name: Timber Template\n * Description: Replaces the standard page with a Timber template.\n *\/\n\n$timber  = new TimberTimber();\n$context = Timber::get_context();\n$post    = new TimberPost();\n\n$context['post'] = $post;\nTimber::render(\n  array( 'content-'. $post-&gt;post_name. '.twig', 'page.twig' ),\n  $context\n);\n<\/code><\/pre>\n<p>W powy\u017cszym kodzie dzieje si\u0119 tak:<\/p>\n<ol>\n<li>\u00a0Tworz\u0119 instancj\u0119 obiektu Timber.<\/li>\n<li>Nast\u0119pnie otrzymuj\u0119 kontekst drewna. Kontekst zawiera wiele przydatnych informacji w szablonie (lub witrynie) w zale\u017cno\u015bci od tego, gdzie u\u017cywasz szablonu.<\/li>\n<li>Potem chwytam TimberPost, kt\u00f3ry jest zasadniczo rozszerzeniem postu na WordPressie. Posiada dane WP_Post, ale udost\u0119pnia je naszym szablonom.<\/li>\n<li>Nast\u0119pnie\u00a0 ustawi\u0119 indeks <strong>postu tablicy<\/strong> <strong>$context<\/strong> z odniesieniem do Timber Post (kt\u00f3ry nazwa\u0142em <strong>$post<\/strong> ).<\/li>\n<li>Na koniec ka\u017c\u0119 Timberowi wyrenderowa\u0107 stron\u0119 o nazwie <strong>content-sample-page.twig<\/strong> przy u\u017cyciu podanego kontekstu.<\/li>\n<\/ol>\n<p>W tym miejscu wa\u017cne jest, aby utworzy\u0107 rzeczywisty plik ga\u0142\u0105zki (kt\u00f3ry jest rozszerzeniem pliku szablonu Timber). Stworzy\u0142em wi\u0119c <strong>content-sample-page.twig<\/strong> i wygl\u0105da <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2c02b22272f645076f7f735bd61a4034#file-06-cotent-sample-page-twig\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">to tak:<\/a><\/p>\n<pre><code>{% block content %}\n  &lt;article id=\"post-{{post.ID}}\" class=\"{{body_class}}\"&gt;\n\n    &lt;header class=\"entry-header\"&gt;\n      &lt;h1 class=\"article-h1\"&gt;{{post.title}}&lt;\/h1&gt;\n    &lt;\/header&gt;&lt;!-- .entry-header --&gt;\n\n    &lt;div class=\"entry-content\"&gt;\n        {{post.content}}\n    &lt;\/div&gt;&lt;!-- .entry-content --&gt;\n\n  &lt;\/article&gt;&lt;!-- #post-## --&gt;\n{% endblock %}\n<\/code><\/pre>\n<p>Po utworzeniu instancji obiektu Timber, a nast\u0119pnie zast\u0105pieniu kodu, kt\u00f3ry widzisz powy\u017cej, zauwa\u017cysz, \u017ce kod czyta si\u0119 troch\u0119 inaczej (cho\u0107 nie jest to trudne do na\u015bladowania).<\/p>\n<h3>4 Stosowanie szablonu<\/h3>\n<p>Aby zastosowa\u0107 szablon, przejd\u017a do <strong>Strony<\/strong> w WordPressie. Zlokalizuj <strong>przyk\u0142adow\u0105 stron\u0119<\/strong>, a nast\u0119pnie w menu rozwijanym szablonu wybierz t\u0119, kt\u00f3r\u0105 w\u0142a\u015bnie utworzyli\u015bmy, u\u017cywaj\u0105c powy\u017cszego tytu\u0142u:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ed87f4dc.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ed87f4dc.png\" alt=\"Szablony WordPress dla pocz\u0105tkuj\u0105cych: drewno\" ><\/a><\/p>\n<p>Gdy to zrobisz, mo\u017cesz wy\u015bwietli\u0107 post. Zauwa\u017cysz, \u017ce wygl\u0105da troch\u0119 nago w por\u00f3wnaniu do tego, do czego jeste\u015bmy przyzwyczajeni:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77eddccec8.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77eddccec8.png\" alt=\"Szablony WordPress dla pocz\u0105tkuj\u0105cych: drewno\" ><\/a><\/p>\n<p>Ale masz og\u00f3lne poj\u0119cie, w jaki spos\u00f3b mo\u017cemy u\u017cy\u0107 kontekstu, aby uzyska\u0107 dost\u0119p do wielu tych samych w\u0142a\u015bciwo\u015bci, do kt\u00f3rych przywykli\u015bmy w WordPressie, bez konieczno\u015bci za\u015bmiecania kodu znacznikami i PHP oraz czymkolwiek innym, czego u\u017cywamy do u\u017cywania.<\/p>\n<h2>Wi\u0119cej zasob\u00f3w<\/h2>\n<p>Wiem, \u017ce jest to g\u0142\u00f3wnie przyspieszony kurs tworzenia szablon\u00f3w i nie obejmuje tak du\u017co, jak m\u00f3g\u0142by. Poniewa\u017c ten post zbli\u017ca si\u0119 do 1000 s\u0142\u00f3w, musz\u0119 gdzie\u015b narysowa\u0107 granic\u0119, wi\u0119c zdecyduj\u0119 si\u0119 zrobi\u0107 to tutaj.<\/p>\n<p>Nie oznacza to jednak, \u017ce sko\u0144czy\u0142em o tym dyskutowa\u0107. Planuj\u0119 wr\u00f3ci\u0107 do bardziej zaawansowanych temat\u00f3w zwi\u0105zanych z tworzeniem szablon\u00f3w w przysz\u0142ych doniczkach.<\/p>\n<p>Ale je\u015bli jeste\u015b zainteresowany, gor\u0105co polecam pod\u0105\u017canie zar\u00f3wno za przewodnikiem <a href=\"https:\/\/timber.github.io\/docs\/getting-started\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Getting tarted<\/a> dla Timber, jak i projektem na <a href=\"https:\/\/github.com\/timber\/timber\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GitHub<\/a>.<\/p>\n<p>To przynajmniej da ci punkt wyj\u015bcia, od kt\u00f3rego mo\u017cesz zrobi\u0107 jeszcze wi\u0119kszy post\u0119p w tworzeniu czystszego, bardziej logicznie oddzielnego kodu ni\u017c ten, do kt\u00f3rego przywykli\u015bmy w WordPressie.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Korzystanie z silnika takiego jak Timber mo\u017ce pom\u00f3c w lepszym rozdzieleniu problem\u00f3w w szablonach WordPress. Oto przyk\u0142ad, jak zacz\u0105\u0107.<\/p>\n","protected":false},"author":1,"featured_media":165382,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[897,845,929,866],"tags":[1169],"class_list":["post-229372","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kod","category-samouczki","category-tematy","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/229372","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=229372"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/229372\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/165382"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=229372"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=229372"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=229372"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}