{"id":230902,"date":"2022-12-23T19:46:00","date_gmt":"2022-12-23T16:46:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230902"},"modified":"2022-12-07T10:55:02","modified_gmt":"2022-12-07T07:55:02","slug":"wzorce-projektowe-dla-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/wzorce-projektowe-dla-wordpress\/","title":{"rendered":"Wzorce projektowe dla WordPress"},"content":{"rendered":"\n<p>Im d\u0142u\u017cej pracujesz z dan\u0105 platform\u0105, tym bardziej zaczynasz rozpoznawa\u0107 pewne sposoby na zrobienie czego\u015b. I jest bardzo prawdopodobne, \u017ce zaczniesz rozpoznawa\u0107 dwie rzeczy, kt\u00f3re mo\u017cna zrobi\u0107:<\/p>\n<ul>\n<li>w spos\u00f3b, kt\u00f3ry szybko si\u0119 rozwija, ale trudniej utrzyma\u0107 lub<\/li>\n<li>w spos\u00f3b, kt\u00f3ry rozwija si\u0119 wolniej, ale jest \u0142atwiejszy w utrzymaniu.<\/li>\n<\/ul>\n<p>Oczywi\u015bcie, tak jak w przypadku ka\u017cdego projektu, wymagania, ograniczenia, bud\u017cety i czas b\u0119d\u0105 mia\u0142y wp\u0142yw na to, co mo\u017cesz wdro\u017cy\u0107. Ale chodzi mi o to, \u017ce niezale\u017cnie od tego, jak zaimplementujesz rozwi\u0105zanie, zaczynasz poznawa\u0107, jak rozwi\u0105za\u0107 dany problem.<\/p>\n<p>Je\u015bli problem musi zosta\u0107 szybko rozwi\u0105zany, znasz kompromisy, ale prawdopodobnie wiesz, jak to zrobi\u0107 szybko. Podobnie, je\u015bli masz troch\u0119 wi\u0119cej czasu (i bud\u017cetu), mo\u017cesz opracowa\u0107 go w inny spos\u00f3b, a b\u0119dziesz wiedzia\u0142, jak to zrobi\u0107, a nawet je\u015bli pozwol\u0105 na to ograniczenia, by\u0107 mo\u017ce nawet zapakujesz go w zestawy testowe.<\/p>\n<p>Niezale\u017cnie od tego, w jaki spos\u00f3b musisz wdro\u017cy\u0107 rozwi\u0105zanie, znasz sposoby, w jakie mo\u017cesz to zrobi\u0107.<\/p>\n<p>A to rodzi pytanie:<\/p>\n<p>Czy istniej\u0105 wzorce projektowe specyficzne dla danej platformy? A je\u015bli tak, to jakie wzorce projektowe mog\u0105 by\u0107 dost\u0119pne w WordPressie?<\/p>\n<h2>Wzorce projektowe dla WordPress<\/h2>\n<p>Oczywi\u015bcie nie m\u00f3wi\u0119 o wzorcach projektowych, kt\u00f3re <a href=\"https:\/\/en.wikipedia.org\/wiki\/Design_Patterns_(book)\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Gang of Four<\/a> opracowa\u0142 tak wiele dekad temu. Zamiast tego m\u00f3wi\u0119 o sposobach robienia pewnych rzeczy w WordPressie.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160471-61e70b0325077.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-160471-61e70b0325077.png\" alt=\"Wzorce projektowe dla WordPress\" ><\/a><\/p>\n<p>Na przyk\u0142ad:<\/p>\n<ul>\n<li>prawid\u0142owe oczyszczanie informacji przed zapisaniem ich do bazy danych (dla post\u00f3w, taksonomii, metadanych itd.),<\/li>\n<li>odczyt danych z bazy danych za pomoc\u0105 narz\u0119dzia bazodanowego WordPress (lub <a href=\"https:\/\/codex.wordpress.org\/Class_Reference\/wpdb\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">$wpdb<\/a> ),<\/li>\n<li>walidacja i zwracanie informacji z bazy danych na \u017c\u0105danie,<\/li>\n<li>weryfikacj\u0119 bezpiecze\u0144stwa \u017c\u0105dania Ajax przed wykonaniem jakiejkolwiek pracy,<\/li>\n<li>poprawne skonfigurowanie niestandardowego zapytania, a nast\u0119pnie zresetowanie go, aby nie zak\u0142\u00f3ca\u0142o g\u0142\u00f3wnej p\u0119tli,<\/li>\n<li>dodawanie zasob\u00f3w specyficznych dla strony zar\u00f3wno w obszarze administracyjnym WordPressa, jak i publicznej stronie WordPressa,<\/li>\n<li>i tak dalej.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160471-61e70b06ec937.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-160471-61e70b06ec937.png\" alt=\"Wzorce projektowe dla WordPress\" ><\/a><\/p>\n<p>Jest wiele rzeczy, kt\u00f3re mogliby\u015bmy tutaj wymieni\u0107. Ale my\u015bl\u0119, \u017ce warto zbada\u0107, jak niekt\u00f3re z nich mog\u0105 wygl\u0105da\u0107.<\/p>\n<p>Po pierwsze, czym s\u0105 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Design_Patterns\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wzorce projektowe<\/a> w klasycznym sensie?<\/p>\n<blockquote>\n<p>Wzorzec projektowy jest form\u0105 wielokrotnego u\u017cytku rozwi\u0105zania problemu projektowego. Pomys\u0142 zosta\u0142 wprowadzony przez architekta Christophera Alexandra i zosta\u0142 zaadaptowany dla r\u00f3\u017cnych innych dyscyplin, w szczeg\u00f3lno\u015bci informatyki.<\/p>\n<\/blockquote>\n<p>Pracuj\u0119 w WordPressie wystarczaj\u0105co d\u0142ugo i zbudowa\u0142em wystarczaj\u0105co du\u017co wtyczek i narz\u0119dzi przy u\u017cyciu aplikacji, aby rozpozna\u0107, jak robi\u0107 pewne rzeczy, a nie wymy\u015bla\u0107 czego\u015b oryginalnego dla ka\u017cdego projektu.<\/p>\n<p>Czy mo\u017cna wi\u0119c bezpiecznie powiedzie\u0107, \u017ce istniej\u0105 narz\u0119dzia wielokrotnego u\u017cytku, kt\u00f3re mo\u017cemy wykorzysta\u0107 w WordPressie w przypadku typowych problem\u00f3w? Pewny. Oczywi\u015bcie trzeba by je uog\u00f3lni\u0107.<\/p>\n<p>Wi\u0119c zamierzam zaj\u0105\u0107 w tej sprawie \u015brodek, przynajmniej ze wzgl\u0119du na blogowanie. Zaczn\u0119 seri\u0119, w kt\u00f3rej om\u00f3wi\u0119 powy\u017csze tematy wraz z przyk\u0142adami kodu.<\/p>\n<p>B\u0119d\u0105 to kr\u00f3tkie artyku\u0142y i zrobi\u0119, co w mojej mocy, aby by\u0142o \u0142atwo \u015bledzi\u0107 (z komentarzami do kodu i wyja\u015bnieniami) i kto wie, mo\u017ce z tego wyro\u015bnie co\u015b wi\u0119cej.<\/p>\n<h2>Nie m\u00f3wi\u0119 o bibliotekach<\/h2>\n<p>Nie nale\u017cy tego myli\u0107 z <a href=\"https:\/\/en.wikipedia.org\/wiki\/Library_(computing)\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">bibliotekami<\/a>. Pami\u0119taj, \u017ce biblioteki s\u0105 jak ma\u0142e fragmenty oprogramowania, kt\u00f3re mo\u017cemy uruchamia\u0107 niezale\u017cnie, lub mog\u0105 by\u0107 zestawem narz\u0119dzi lub funkcji, kt\u00f3re mo\u017cna zaimportowa\u0107 do projektu w celu dodania funkcjonalno\u015bci.<\/p>\n<blockquote>\n<p>W informatyce biblioteka to zbi\u00f3r nieulotnych zasob\u00f3w wykorzystywanych przez programy komputerowe, cz\u0119sto do tworzenia oprogramowania. Mog\u0105 to by\u0107 dane konfiguracyjne, dokumentacja, dane pomocy, szablony wiadomo\u015bci, wst\u0119pnie napisany kod i podprogramy, klasy, warto\u015bci lub specyfikacje typu.<\/p>\n<\/blockquote>\n<p>By\u0107 mo\u017ce pewne wzorce specyficzne dla WordPressa mog\u0142yby zosta\u0107 wbudowane w ich biblioteki, ale nie o to chodzi w tym po\u015bcie.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160471-61e70b0a9a64d.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-160471-61e70b0a9a64d.png\" alt=\"Wzorce projektowe dla WordPress\" ><\/a><\/p>\n<p>Zamiast tego staram si\u0119 po prostu przedstawi\u0107 potencjalne, typowe wzorce, kt\u00f3re istniej\u0105 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>Mo\u017ce istniej\u0105 pewne wzorce projektowe dla WordPressa. W tym po\u015bcie i nadchodz\u0105cej serii, by\u0107 mo\u017ce warto je pozna\u0107.<\/p>\n","protected":false},"author":1,"featured_media":236332,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,897,845,866],"tags":[1169],"class_list":["post-230902","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-kod","category-samouczki","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/230902","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=230902"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/230902\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/236332"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=230902"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=230902"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=230902"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}