{"id":228634,"date":"2022-10-28T11:27:00","date_gmt":"2022-10-28T08:27:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228634"},"modified":"2022-11-09T03:24:36","modified_gmt":"2022-11-09T00:24:36","slug":"zaladuj-wszystkie-niestandardowe-pola-wordpress-za-pomoca-zapytania-do-bazy-danych","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/zaladuj-wszystkie-niestandardowe-pola-wordpress-za-pomoca-zapytania-do-bazy-danych\/","title":{"rendered":"Za\u0142aduj wszystkie niestandardowe pola WordPress za pomoc\u0105 zapytania do bazy danych"},"content":{"rendered":"\n<p>Podczas pobierania informacji z bazy danych WordPressa wol\u0119 unika\u0107 bezpo\u015brednich zapyta\u0144 do bazy danych, ale zdarzaj\u0105 si\u0119 sytuacje, w kt\u00f3rych mog\u0105 by\u0107 przydatne (i wa\u017cne jest, aby zosta\u0142o to zrobione prawid\u0142owo).<\/p>\n<p>Jednym z przypadk\u00f3w u\u017cycia, w kt\u00f3rych mo\u017ce to by\u0107 pomocne, jest pobranie zestawu danych jednego typu. Przyk\u0142ad: za\u0142\u00f3\u017cmy, \u017ce musisz za\u0142adowa\u0107 wszystkie niestandardowe pola WordPress.<\/p>\n<p>W chwili pisania tego tekstu nie ma funkcji, o kt\u00f3rej wiem, \u017ce wykona to zadanie, wi\u0119c oto, w jaki spos\u00f3b wysy\u0142am zapytanie do bazy danych, aby to zrobi\u0107.<\/p>\n<h2>Za\u0142aduj wszystkie niestandardowe pola WordPress<\/h2>\n<p>Nale\u017cy zwr\u00f3ci\u0107 uwag\u0119 na kilka kwestii dotycz\u0105cych p\u00f3l niestandardowych, kt\u00f3re s\u0105 powi\u0105zane z danym postem:<\/p>\n<ul>\n<li>pola niestandardowe s\u0105 przechowywane w metadanych posta,<\/li>\n<li>pola niestandardowe s\u0105 uwa\u017cane za prywatne, dlatego s\u0105 poprzedzone podkre\u015bleniem,<\/li>\n<li>Standardy kodowania WordPressa tego nie polubi\u0105 (wi\u0119c mo\u017ce by\u0107 konieczne zignorowanie standard\u00f3w)<\/li>\n<\/ul>\n<p>Mo\u017cesz przeczyta\u0107 o nich wszystko w <a href=\"https:\/\/codex.wordpress.org\/Custom_Fields\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Kodeksie<\/a>.<\/p>\n<p>I tak, \u0142atwo jest uzyska\u0107 wszystkie niestandardowe informacje dla jednego posta. Ale je\u015bli pracujesz nad projektem, w kt\u00f3rym musisz pobra\u0107 wszystkie pola niestandardowe, a mianowicie te, kt\u00f3re s\u0105 prywatne, musisz upewni\u0107 si\u0119, \u017ce pytasz o ci\u0105gi, kt\u00f3re zaczynaj\u0105 si\u0119 od podkre\u015blenia.<\/p>\n<p>Aby za\u0142adowa\u0107 wszystkie niestandardowe pola WordPress do bazy danych, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/206b5b224488db5ba5e28ee106286695\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">oto zapytanie, kt\u00f3rego u\u017cywam<\/a> :<\/p>\n<pre><code>&lt;?php\n\nfunction get_the_custom_fields() {\n\n    global $wpdb;\n\n    $results = $wpdb-&gt;get_results(\n        $wpdb-&gt;prepare(\n            \"\n            SELECT meta_key, meta_value\n            FROM   $wpdb-&gt;postmeta\n            WHERE  meta_key REGEXP '%s'\n            \", '^[_]') );\n\n    return $results;\n}\n<\/code><\/pre>\n<p>Kilka rzeczy, o kt\u00f3rych nale\u017cy pami\u0119ta\u0107 w powy\u017cszym zapytaniu:<\/p>\n<ul>\n<li>Korzystam z funkcji <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wpdb\/prepare\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">przygotowania<\/a> przed <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wpdb\/get_results\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_results<\/a>. To jest dla parametryzacji i bezpiecze\u0144stwa. Je\u015bli to dla Ciebie nowo\u015b\u0107, polecam przeczytanie <a href=\"https:\/\/codex.wordpress.org\/Class_Reference\/wpdb#Protect_Queries_Against_SQL_Injection_Attacks\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tego artyku\u0142u<\/a>.<\/li>\n<li>Zwraca wszystkie klucze meta i warto\u015bci meta w tablicy,<\/li>\n<li>W zale\u017cno\u015bci od liczby rekord\u00f3w, kt\u00f3re chcesz zwr\u00f3ci\u0107, mo\u017ce to zaj\u0105\u0107 troch\u0119 czasu (i powinno by\u0107 wykonywane w partiach).<\/li>\n<\/ul>\n<p>Wreszcie, dla tych, kt\u00f3rzy s\u0105 ciekawi, indeksy nie istniej\u0105 w kolumnie meta_value, ale w kolumnie meta_key.<\/p>\n<p>Kolumny w tabeli Post Meta z indeksami.<\/p>\n<p>Je\u015bli wi\u0119c zdecydujesz si\u0119 zmodyfikowa\u0107 zapytanie i chcesz u\u017cy\u0107 kolumn, kt\u00f3re maj\u0105 indeksy, odnie\u015b si\u0119 do meta_id, post_id i meta_key.<\/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>Korzystaj\u0105c z bezpo\u015bredniego zapytania do bazy danych, mo\u017cesz za\u0142adowa\u0107 wszystkie niestandardowe pola WordPress. Oto jak to zrobi\u0107 w bezpieczny spos\u00f3b.<\/p>\n","protected":false},"author":1,"featured_media":220737,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,897,866],"tags":[1169],"class_list":["post-228634","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-kod","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/228634","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=228634"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/228634\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/220737"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=228634"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=228634"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=228634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}