{"id":233865,"date":"2023-02-23T09:41:00","date_gmt":"2023-02-23T06:41:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233865"},"modified":"2022-11-11T12:52:45","modified_gmt":"2022-11-11T09:52:45","slug":"samouczek-motywu-wordpress-dla-poczatkujacych-czesc-9-menu-i-obszary-widzetow","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/samouczek-motywu-wordpress-dla-poczatkujacych-czesc-9-menu-i-obszary-widzetow\/","title":{"rendered":"Samouczek motywu WordPress dla pocz\u0105tkuj\u0105cych \u2013 cz\u0119\u015b\u0107 9: Menu i obszary wid\u017cet\u00f3w"},"content":{"rendered":"\n<p>Ta lekcja opisuje, jak doda\u0107 dwie podstawowe funkcje WordPress do naszego motywu; menu i obszary wid\u017cet\u00f3w. Dowiadujemy si\u0119, jak zarejestrowa\u0107 lokalizacj\u0119 g\u0142\u00f3wnego menu nawigacyjnego witryny i wy\u015bwietli\u0107 menu w naszych szablonach, a tak\u017ce umo\u017cliwi\u0107 dodawanie wid\u017cet\u00f3w w naszym pasku bocznym i obszarze stopki.<\/p>\n<p>Zapewne zauwa\u017cyli\u015bcie, \u017ce ani \u201eMenu&quot;, ani \u201eWid\u017cety&#8221; nie s\u0105 dost\u0119pne z menu \u201eWygl\u0105d&#8221; w panelu administracyjnym. To dlatego, \u017ce nasz motyw jeszcze ich nie obs\u0142uguje. Naprawimy to w tej lekcji \u2013 zaczynaj\u0105c od menu .<\/p>\n<h2>Menu WordPress<\/h2>\n<p>Dodawanie menu do motywu sk\u0142ada si\u0119 z dw\u00f3ch cz\u0119\u015bci. Najpierw musisz zdefiniowa\u0107 jedn\u0105 lub wi\u0119cej lokalizacji menu w swoim <code>functions.php<\/code>. Przyk\u0142adem jest menu g\u0142\u00f3wne, kt\u00f3re b\u0119dzie znajdowa\u0107 si\u0119 w nag\u0142\u00f3wku wszystkich stron. Druga cz\u0119\u015b\u0107 to dodanie kodu w tym miejscu, kt\u00f3re chcesz wy\u015bwietli\u0107 w menu. Na przyk\u0142ad w <code>header.php<\/code>miejscu, w kt\u00f3rym chcesz umie\u015bci\u0107 menu g\u0142\u00f3wne.<\/p>\n<h3>Rejestrowanie lokalizacji menu<\/h3>\n<p>W tym samouczku dodamy jedn\u0105 lokalizacj\u0119 menu do g\u0142\u00f3wnej nawigacji witryny i umie\u015bcimy jej dane wyj\u015bciowe w naszym <code>header.php<\/code>. Zacznijmy od zarejestrowania lokalizacji w <code>functions.php<\/code>, co odbywa si\u0119 za pomoc\u0105 funkcji <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_nav_menu\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">register_nav_menu<\/a> :<\/p>\n<pre><code>add_action('init', 'wptutorial_register_menu');\nfunction wptutorial_register_menu() {\n    register_nav_menu('main-nav', __('Main Navigation', 'wptutorial'));\n}<\/code><\/pre>\n<p>Musimy podpi\u0105\u0107 si\u0119 pod hak <code>init<\/code>, kt\u00f3ry WordPress uzna\u0142, \u017ce jest dobrym \u201epunktem kontrolnym&#8221; do rejestrowania lokalizacji menu. Wewn\u0105trz naszej funkcji wywo\u0142ujemy, <code>register_nav_menu()<\/code>kt\u00f3ra przyjmuje minimum dw\u00f3ch parametr\u00f3w; uchwyt menu, kt\u00f3ry jest unikalnym \u015blimakiem, kt\u00f3rego b\u0119dziesz u\u017cywa\u0107 jako identyfikatora podczas renderowania menu, oraz widoczn\u0105 nazw\u0119 menu, kt\u00f3ra pojawia si\u0119 w panelu administracyjnym. Zwr\u00f3\u0107 uwag\u0119, \u017ce umie\u015bci\u0142em nazw\u0119 <code>__()<\/code>w \u015brodku, aby mo\u017cna j\u0105 by\u0142o przet\u0142umaczy\u0107, jak dowiedzieli\u015bmy si\u0119 w <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-8-translation-of-your-theme\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">poprzednim kroku<\/a>.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151855-61e4d0df88967.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-151855-61e4d0df88967.png\" alt=\"Samouczek motywu WordPress dla pocz\u0105tkuj\u0105cych \u2013 cz\u0119\u015b\u0107 9: Menu i obszary wid\u017cet\u00f3w\" ><\/a><\/p>\n<p>Je\u015bli od\u015bwie\u017cysz panel administracyjny, powiniene\u015b zobaczy\u0107 now\u0105 pozycj\u0119 podmenu pod \u201eWygl\u0105d&#8221;; \u201eMenu&#8221;. Gratulacje, Tw\u00f3j motyw obs\u0142uguje teraz tworzenie menu!<\/p>\n<p>Je\u015bli nie jeste\u015b zaznajomiony z tworzeniem i administrowaniem menu w WordPressie, <a href=\"https:\/\/wordpress.org\/support\/article\/appearance-menus-screen\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">jest to dobry przewodnik<\/a> dla Ciebie.<\/p>\n<p>Utw\u00f3rz nowe menu w \u201eWygl\u0105d &gt; Menu&#8221; \u2013 mo\u017ce zawiera\u0107 wszystko, co chcesz, w\u0142a\u015bnie doda\u0142em fa\u0142szywe posty, kt\u00f3re stworzy\u0142em w moim WordPressie.<\/p>\n<p>Po zapisaniu pierwszego menu pod obszarem edycji menu pojawi si\u0119 nowa sekcja o nazwie \u201eUstawienia menu&#8221;, kt\u00f3ra pozwala wybra\u0107 lokalizacj\u0119 tego menu. Powinna zawiera\u0107 jedn\u0105 dost\u0119pn\u0105 lokalizacj\u0119, kt\u00f3r\u0105 stworzyli\u015bmy; &quot;G\u0142\u00f3wna nawigacja&quot;.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151855-61e4d0e03b2f8.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-151855-61e4d0e03b2f8.png\" alt=\"Samouczek motywu WordPress dla pocz\u0105tkuj\u0105cych \u2013 cz\u0119\u015b\u0107 9: Menu i obszary wid\u017cet\u00f3w\" ><\/a><\/p>\n<p>Zaznacz pole \u201eG\u0142\u00f3wna nawigacja&#8221; i naci\u015bnij Zapisz. Teraz nowo utworzone menu jest po\u0142\u0105czone z lokalizacj\u0105 i b\u0119dzie wy\u015bwietlane automatycznie w dowolnym miejscu, w kt\u00f3rym dodasz kod, aby wy\u015bwietli\u0107 t\u0119 lokalizacj\u0119 menu. Zr\u00f3bmy to teraz.<\/p>\n<h3>Wyprowadzanie lokalizacji menu w szablonie<\/h3>\n<p>Otw\u00f3rz <code>header.php<\/code>i gdziekolwiek chcesz, aby by\u0142o wyj\u015bcie menu, dodaj wywo\u0142anie do <code>wp_nav_menu()<\/code>. Ta funkcja akceptuje ca\u0142\u0105 mas\u0119 argument\u00f3w w tablicy, aby naprawd\u0119 dostosowa\u0107 wyj\u015bcie menu. Co najwa\u017cniejsze, potrzebujemy parametru, kt\u00f3ry m\u00f3wi mu, aby pobra\u0107 lokalizacj\u0119 \u201eG\u0142\u00f3wna nawigacja&#8221;. W tym celu dodajemy argument \u201e <code>theme_location<\/code>&#8221; i ustawiamy go w uchwycie naszego menu; &#8217; <code>main-nav<\/code>&#8217;.<\/p>\n<p>Doda\u0142em wyj\u015bcie menu zaraz po rozpocz\u0119ciu <code>&lt;body&gt;<\/code>tagu, ale je\u015bli uzupe\u0142ni\u0142e\u015b swoje szablony za pomoc\u0105 HTML, sam zdecyduj, gdzie ma si\u0119 pojawia\u0107 menu.<\/p>\n<pre><code>...\n&lt;body &lt;?php body_class(); ?&gt;&gt;\n    &lt;nav class=\"main-nav\"&gt;&lt;?php wp_nav_menu(['theme_location' =&gt; 'main-nav']); ?&gt;&lt;\/nav&gt;<\/code><\/pre>\n<p>Od\u015bwie\u017c sw\u00f3j frontend i powiniene\u015b zobaczy\u0107 menu, kt\u00f3re utworzy\u0142e\u015b w admin, wyprowadzone jako nieuporz\u0105dkowana lista na pocz\u0105tku szablonu.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151855-61e4d0e11c102.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-151855-61e4d0e11c102.png\" alt=\"Samouczek motywu WordPress dla pocz\u0105tkuj\u0105cych \u2013 cz\u0119\u015b\u0107 9: Menu i obszary wid\u017cet\u00f3w\" ><\/a><\/p>\n<p>Jak zwykle, zach\u0119cam do zag\u0142\u0119bienia si\u0119 w parametry <code>wp_nav_menu<\/code>w <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_nav_menu\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentacji WordPress Codex<\/a> i pobaw si\u0119 z tym, jak chcesz, aby wynik by\u0142. Na przyk\u0142ad: mo\u017cesz sprawi\u0107, \u017ce nie b\u0119dzie wy\u015bwietlany na li\u015bcie HTML, mo\u017cesz ograniczy\u0107 pozycje menu tylko do okre\u015blonych poziom\u00f3w (aby zapobiec podmenu) i nie tylko.<\/p>\n<p>Je\u015bli jeste\u015b ciekawy cz\u0119\u015bci dotycz\u0105cej stylizacji; sp\u00f3jrz na klasy, kt\u00f3re WordPress automatycznie dodaje do ka\u017cdej pozycji menu. B\u0119dziesz m\u00f3g\u0142 \u0142atwo dodawa\u0107 style dla aktywnego elementu menu, element\u00f3w, kt\u00f3re maj\u0105 elementy podrz\u0119dne, elementu nadrz\u0119dnego aktywnego elementu podrz\u0119dnego itp.<\/p>\n<p>Uwaga: ka\u017cdy u\u017cytkownik motywu mo\u017ce zawsze utworzy\u0107 wiele menu i wybra\u0107 wy\u015bwietlanie ich poza zarejestrowanymi lokalizacjami motywu za pomoc\u0105 wid\u017cet\u00f3w. Jednak, aby to zrobi\u0107, tw\u00f3j motyw musi zdefiniowa\u0107 kilka obszar\u00f3w wid\u017cet\u00f3w! Zr\u00f3bmy to dalej.<\/p>\n<h2>Obszary wid\u017cet\u00f3w<\/h2>\n<p>Obszary wid\u017cet\u00f3w dzia\u0142aj\u0105 bardzo podobnie w przypadku menu. Rejestrujesz lokalizacj\u0119 (w przypadku wid\u017cet\u00f3w definiujesz obszar, w kt\u00f3rym u\u017cytkownik motywu mo\u017ce umieszcza\u0107 wid\u017cety), a gdziekolwiek chcesz, aby lokalizacja\/obszar pojawia\u0142 si\u0119 w szablonach, dodajesz fragment kodu, kt\u00f3ry odnosi si\u0119 do identyfikatora uchwytu podanego w Twoim kod rejestracyjny.<\/p>\n<p>Zdefiniujmy obszar wid\u017cetu na naszym pasku bocznym i jeden w stopce. Cz\u0119sto motywy zawieraj\u0105 wiele obszar\u00f3w wid\u017cet\u00f3w w stopce, aby \u0142adnie podzieli\u0107 je na kolumny, ale w tym samouczku po prostu dodamy jeden do stopki.<\/p>\n<p>Obszary wid\u017cet\u00f3w s\u0105 okre\u015blane jako \u201epaski boczne&#8221; w kodzie WordPress, ale nie dotyczy to wy\u0142\u0105cznie prawego paska bocznego w dawnych czasach na stronach internetowych. Wygl\u0105da na to, \u017ce jaka\u015b starsza nazwa po prostu utkn\u0119\u0142a z czas\u00f3w, gdy witryny internetowe zwykle mia\u0142y tylko obszar wid\u017cet\u00f3w na pasku bocznym. Nie my\u015bl, \u017ce \u201epaski boczne&#8221; mog\u0105 odnosi\u0107 si\u0119 tylko do rzeczywistych pask\u00f3w bocznych.<\/p>\n<h3>Zarejestruj obszary wid\u017cet\u00f3w<\/h3>\n<p>Zaczynamy od zarejestrowania dw\u00f3ch obszar\u00f3w wid\u017cet\u00f3w w naszym <code>functions.php<\/code>. U\u017cywamy tej funkcji <code>register_sidebar<\/code>do rejestrowania naszych pask\u00f3w bocznych, podpi\u0119tych do <code>widgets_init<\/code>haka, kt\u00f3ry WordPress zdefiniowa\u0142 jako najlepszy hak do rejestrowania obszar\u00f3w wid\u017cet\u00f3w (i niestandardowych wid\u017cet\u00f3w).<\/p>\n<pre><code>add_action('widgets_init', 'wptutorial_register_sidebar');\nfunction wptutorial_register_sidebar() {\n    register_sidebar([\n        'name' =&gt; __('Sidebar Widget Area', 'wptutorial'),\n        'id' =&gt; 'sidebar-area'\n    ]);\n    register_sidebar([\n        'name' =&gt; __('Footer Widget Area', 'wptutorial'),\n        'id' =&gt; 'footer-area'\n    ]);\n}<\/code><\/pre>\n<p>Funkcja <code>register_sidebar()<\/code>przyjmuje sporo argument\u00f3w, jako minimum potrzebujesz argument\u00f3w 'id&#8217; i 'name&#8217;. Dost\u0119pne s\u0105 parametry umo\u017cliwiaj\u0105ce zdefiniowanie sposobu wy\u015bwietlania opakowa\u0144 HTML wid\u017cet\u00f3w.<\/p>\n<p>Od\u015bwie\u017c panel administracyjny. Powiniene\u015b teraz zobaczy\u0107 pozycj\u0119 menu \u201eWid\u017cety&#8221; w sekcji \u201eWygl\u0105d&#8221;. W panelu administracyjnym \u201eWid\u017cety&#8221; mo\u017cesz zobaczy\u0107 dwa dost\u0119pne obszary wid\u017cet\u00f3w w prawym obszarze; czyli nasz \u201eObszar wid\u017cet\u00f3w paska bocznego&#8221; i \u201eObszar wid\u017cet\u00f3w stopki&#8221;.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151855-61e4d0e22862e.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-151855-61e4d0e22862e.png\" alt=\"Samouczek motywu WordPress dla pocz\u0105tkuj\u0105cych \u2013 cz\u0119\u015b\u0107 9: Menu i obszary wid\u017cet\u00f3w\" ><\/a><\/p>\n<p>Umie\u015b\u0107 losowy wid\u017cet w naszym obszarze wid\u017cet\u00f3w paska bocznego lub stopki, aby zobaczy\u0107 go w akcji.<\/p>\n<h3>Wyprowadzanie obszaru wid\u017cet\u00f3w w szablonie<\/h3>\n<p>Ostatni\u0105 cz\u0119\u015bci\u0105 jest wyprowadzanie obszar\u00f3w wid\u017cet\u00f3w do naszych szablon\u00f3w. W tym celu korzystamy z funkcji <code>dynamic_sidebar()<\/code>i udost\u0119pniamy uchwyt jako parametr. Otw\u00f3rz <code>sidebar.php<\/code>i dodaj nast\u0119puj\u0105ce elementy wewn\u0105trz <code>&lt;aside&gt;<\/code>tag\u00f3w:<\/p>\n<pre><code>&lt;aside class=\"sidebar\"&gt;\n    &lt;ul&gt;&lt;?php dynamic_sidebar('sidebar-area'); ?&gt;&lt;\/ul&gt;\n&lt;\/aside&gt;<\/code><\/pre>\n<p>Zauwa\u017c, \u017ce owin\u0105\u0142em go wewn\u0105trz nieuporz\u0105dkowanego znacznika listy (<code>&lt;ul&gt;<\/code>). Dzieje si\u0119 tak, poniewa\u017c domy\u015blnie <code>dynamic_sidebar<\/code>wypisuje wszystkie wid\u017cety opakowane w <code>&lt;li&gt;<\/code>elementy. Zach\u0119cam do zabawy z parametrami wyj\u015bciowymi, je\u015bli nie lubisz wid\u017cet\u00f3w b\u0119d\u0105cych list\u0105.<\/p>\n<p>Je\u015bli chodzi o stopk\u0119, dodajemy j\u0105 na samym pocz\u0105tku <code>footer.php<\/code>, zawini\u0119t\u0105 w <code>&lt;footer&gt;<\/code>tag (je\u015bli chcesz).<\/p>\n<pre><code>    &lt;footer&gt;\n        &lt;ul&gt;&lt;?php dynamic_sidebar('footer-area'); ?&gt;&lt;\/ul&gt;\n    &lt;\/footer&gt;\n    &lt;?php wp_footer(); ?&gt;\n...<\/code><\/pre>\n<p>To tyle, je\u015bli chodzi o menu i obszary wid\u017cet\u00f3w. Tw\u00f3j motyw ma teraz mo\u017cliwo\u015b\u0107 tworzenia nowego menu i u\u017cywania wid\u017cetu do wy\u015bwietlania go na pasku bocznym lub w stopce. W <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-10-fleshing-out-templates\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">nast\u0119pnej lekcji<\/a> z tej serii samouczk\u00f3w stworzymy wi\u0119cej szablon\u00f3w do naszego motywu.<\/p>\n<h2>Dokumentacja dotycz\u0105ca zastosowanych metod<\/h2>\n<ul>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_action\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">add_action<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_nav_menu\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">register_nav_menu<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_nav_menu\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_nav_menu<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_sidebar\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">register_sidebar<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/dynamic_sidebar\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dynamiczny_pasek boczny<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ta lekcja opisuje, jak dodawa\u0107 menu nawigacyjne, rejestruj\u0105c lokalizacj\u0119 menu, a tak\u017ce rejestruj\u0105c i umieszczaj\u0105c obszar wid\u017cet\u00f3w w WordPress.<\/p>\n","protected":false},"author":1,"featured_media":224072,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[897,721,721,897,1110,752,752,836,836,845,929,929,845,866,866],"tags":[1169],"class_list":["post-233865","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kod","category-deweloper","category-n-a","category-otwarte-zrodlo","category-przewodnik-dla-poczatkujacych","category-samouczki","category-tematy","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/233865","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=233865"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/233865\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/224072"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=233865"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=233865"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=233865"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}