{"id":230875,"date":"2022-12-22T10:07:00","date_gmt":"2022-12-22T07:07:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230875"},"modified":"2022-12-07T10:31:36","modified_gmt":"2022-12-07T07:31:36","slug":"nie-zanieczyszczaj-tabeli-opcji-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/nie-zanieczyszczaj-tabeli-opcji-wordpress\/","title":{"rendered":"Nie zanieczyszczaj tabeli opcji WordPress"},"content":{"rendered":"\n<p>Jestem fanem kr\u00f3tkich cykli wydawniczych. W zale\u017cno\u015bci od projektu d\u0142ugo\u015b\u0107 cyklu b\u0119dzie si\u0119 r\u00f3\u017cni\u0107, ale w przypadku wielu typ\u00f3w projekt\u00f3w, nad kt\u00f3rymi pracuj\u0119, staram si\u0119 mie\u0107 dwutygodniowe cykle wydawnicze.<\/p>\n<p>Co wi\u0119cej, s\u0105 chwile, w kt\u00f3rych pracuj\u0119 nad projektem dla kogo\u015b, w kt\u00f3rym zmienne \u015brodowiskowe s\u0105 niezb\u0119dne, aby kod wiedzia\u0142, czy dzia\u0142a w fazie rozwoju, postoju czy produkcji.<\/p>\n<p>I mo\u017cna to osi\u0105gn\u0105\u0107 w r\u00f3\u017cny spos\u00f3b w zale\u017cno\u015bci od potrzeb projektu. Czasami plik konfiguracyjny b\u0119dzie dzia\u0142a\u0142, czasami zmienne ci\u0105gu zapytania mog\u0105 dzia\u0142a\u0107, a innym razem my\u015bl\u0119, \u017ce rozs\u0105dne jest przechowywanie ustawienia w bazie danych.<\/p>\n<p>Ale je\u015bli chodzi o WordPress, my\u015bl\u0119, \u017ce skracamy lepsze decyzje projektowe i umieszczamy informacje w bazie danych, szczeg\u00f3lnie w tabeli opcji, kiedy alternatywy mog\u0105 by\u0107 lepiej dopasowane.<\/p>\n<h2>Tabela opcji WordPress<\/h2>\n<p>Chc\u0119 powiedzie\u0107 jasno: nie s\u0105dz\u0119, \u017ce tabela opcji powinna s\u0142u\u017cy\u0107 jako wysypisko dla ustawie\u0144, gdy nie masz gdzie umie\u015bci\u0107 informacji. I to jest sedno tego ca\u0142ego postu.<\/p>\n<p>Zamiast tego mo\u017cesz u\u017cy\u0107:<\/p>\n<ul>\n<li>plik konfiguracyjny,<\/li>\n<li>dane sesji (je\u015bli dotyczy),<\/li>\n<li>niestandardowa tabela bazy danych,<\/li>\n<li>albo co\u015b innego.<\/li>\n<\/ul>\n<p>Dlaczego wi\u0119c widzimy to tak cz\u0119sto? Nie chodzi o to, \u017ce nie ma czasu, w kt\u00f3rym warto z niego korzysta\u0107. Po prostu my\u015bl\u0119, \u017ce go nadu\u017cywamy. Ale s\u0105 powody.<\/p>\n<p><a href=\"https:\/\/codex.wordpress.org\/Option_Reference\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Kodeks WordPress<\/a> definiuje opcje takie jak:<\/p>\n<blockquote>\n<p><strong>Opcje<\/strong> to fragmenty danych, kt\u00f3rych WordPress u\u017cywa do przechowywania r\u00f3\u017cnych preferencji i ustawie\u0144 konfiguracyjnych.<\/p>\n<\/blockquote>\n<p>Z tak\u0105 definicj\u0105 \u0142atwo zrozumie\u0107, dlaczego tak wielu u\u017cywa jej jako miejsca do przechowywania wszystkiego, co nie pasuje nigdzie indziej.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160574-61e70cd8a4ea4.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-160574-61e70cd8a4ea4.png\" alt=\"Nie zanieczyszczaj tabeli opcji WordPress\" ><\/a><\/p>\n<p>Zamiast tego my\u015bl\u0119, \u017ce wa\u017cne jest, aby zada\u0107 pytanie:<\/p>\n<blockquote>\n<p>Do jakiego rodzaju przechowywania [te dane] s\u0105 najbardziej odpowiednie?<\/p>\n<\/blockquote>\n<p>Oznacza to, \u017ce je\u015bli jest powi\u0105zany z postami, dlaczego nie przechowywa\u0107 go w metatabeli postu? To samo dotyczy metadanych termin\u00f3w, komentarzy lub czegokolwiek innego.<\/p>\n<p>Chodzi o to:<\/p>\n<p>Znajd\u017a najbardziej logiczne miejsce do przechowywania danych i umie\u015b\u0107 je tam.<\/p>\n<p>Innymi s\u0142owy, nie wrzucaj danych do tabeli opcji WordPress, poniewa\u017c nie mieszcz\u0105 si\u0119 one nigdzie indziej. To go zanieczyszcza. Zamiast tego znajd\u017a \u2013 lub stw\u00f3rz \u2013 dla niego najbardziej logiczne miejsce. Jest to prawdopodobnie dow\u00f3d na zapach kodu i by\u0142by dobrym powodem do ponownej oceny architektury kodu i sposobu reprezentowania informacji.<\/p>\n<p>Ale jak to mo\u017ce wygl\u0105da\u0107? To znaczy, jak wzi\u0119liby\u015bmy dany fragment kodu i zmienili jego reprezentacj\u0119 w bazie danych.<\/p>\n<p>Niestety, trudno jest poda\u0107 nakazowe rozwi\u0105zanie tego pytania, gdy istnieje tak wiele wariant\u00f3w realizacji problemu. Mo\u017ce wi\u0119c potrzebna jest prosta wskaz\u00f3wka:<\/p>\n<p>Je\u015bli dane s\u0105 powi\u0105zane z istniej\u0105cymi wcze\u015bniej typami danych (lub tabelami), u\u017cyj ich; w przeciwnym razie rozwa\u017c plik konfiguracyjny lub niestandardow\u0105 tabel\u0119 bazy danych, kt\u00f3ra jest mapowana na twoj\u0105 prac\u0119.<\/p>\n<p>Jestem pewien, \u017ce istniej\u0105 inne czynniki przewodnie, ale jest to lepsze miejsce na rozpocz\u0119cie ni\u017c zwyk\u0142e zanieczyszczanie tabeli opcji WordPressa.<\/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>Nie wrzucaj danych do tabeli opcji WordPressa, poniewa\u017c nie mie\u015bci si\u0119 ona nigdzie indziej. To go zanieczyszcza. Zamiast tego znajd\u017a \u2013 lub stw\u00f3rz \u2013 dla niego najbardziej logiczne miejsce.<\/p>\n","protected":false},"author":1,"featured_media":235679,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,866],"tags":[1169],"class_list":["post-230875","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/230875","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=230875"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/230875\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/235679"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=230875"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=230875"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=230875"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}