{"id":10396,"date":"2026-09-12T18:10:00","date_gmt":"2026-09-12T16:10:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=10396"},"modified":"2026-10-26T13:49:06","modified_gmt":"2026-10-26T12:49:06","slug":"analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\/","title":{"rendered":"Analiza wolnych filtr\u00f3w WordPressa: jak meta_query odpytuje baz\u0119 danych"},"content":{"rendered":"<p>Filtr obejmuj\u0105cy trzy pola w\u0142asne mo\u017ce utworzy\u0107 trzy z\u0142\u0105czenia z <code>wp_postmeta<\/code>. Z\u0142\u0105czenie \u0142\u0105czy wiersze tabel, a alias nadaje osobn\u0105 nazw\u0119 danemu u\u017cyciu tabeli. Liczba z\u0142\u0105cze\u0144 zale\u017cy od warunk\u00f3w i sposobu \u0142\u0105czenia warunk\u00f3w, nie tylko od liczby p\u00f3l.<\/p>\n<p>Metadane przechowuj\u0105 dodatkowe informacje o wpisie, zwykle jako nazw\u0119 pola i warto\u015b\u0107. WP_Query buduje zapytania o wpisy WordPressa, a SQL jest j\u0119zykiem zapyta\u0144 bazy danych. Indeks to dodatkowa struktura wyszukiwania u\u0142atwiaj\u0105ca znalezienie pasuj\u0105cych wierszy. Pami\u0119\u0107 podr\u0119czna zachowuje wcze\u015bniejsze wyniki do ponownego u\u017cycia.<\/p>\n<p>Istotny jest koszt rzeczywistego zapytania. Rozk\u0142ad danych, indeksy, wielko\u015b\u0107 wyniku, sortowanie i trafienia w pami\u0119\u0107 podr\u0119czn\u0105 wp\u0142ywaj\u0105 na obci\u0105\u017cenie. Du\u017ca tabela metadanych uzasadnia pomiar, ale nie dowodzi powolno\u015bci ka\u017cdego filtra.<\/p>\n<figure class=\"lw-diagram\">\n<img decoding=\"async\" alt=\"Trzy por\u00f3wnania r\u00f3wno\u015bci: AND u\u017cywa trzech z\u0142\u0105cze\u0144, zgodne OR jednego. Logika wyniku jest inna; to nie jest pomiar czasu.\" height=\"580\" loading=\"lazy\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/quality-10396-20261024.png\" width=\"1120\"\/>\n<figcaption>Trzy por\u00f3wnania r\u00f3wno\u015bci: AND u\u017cywa trzech z\u0142\u0105cze\u0144, zgodne OR jednego. Logika wyniku jest inna; to nie jest pomiar czasu.<\/figcaption>\n<\/figure>\n<h2>Co WP_Query tworzy z tablicy<\/h2>\n<p>Trzy por\u00f3wnania r\u00f3wno\u015bci dla r\u00f3\u017cnych kluczy po\u0142\u0105czone przez <code>AND<\/code> zwykle wymagaj\u0105 trzech alias\u00f3w metadanych. Zgodne klauzule w tej samej grupie mog\u0105 wsp\u00f3\u0142dzieli\u0107 alias: te same trzy por\u00f3wnania po\u0142\u0105czone przez <code>OR<\/code> wymagaj\u0105 jednego z\u0142\u0105czenia w sprawdzonym rdzeniu WordPressa 7.1.3. Zmienia to jednak znaczenie z \u201ewszystkie warunki\u201d na \u201eco najmniej jeden warunek\u201d. Zamiana AND na OR nie jest poprawn\u0105 optymalizacj\u0105. Poni\u017cszy SQL przedstawia uproszczony przypadek AND z czytelnymi aliasami.<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"sql\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">SQL<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-sql\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">SELECT<\/span> wp_posts.ID <span class=\"cbb-keyword\">FROM<\/span> wp_posts\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">INNER<\/span> <span class=\"cbb-keyword\">JOIN<\/span> wp_postmeta pm1 <span class=\"cbb-keyword\">ON<\/span> wp_posts.ID = pm1.post_id\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">INNER<\/span> <span class=\"cbb-keyword\">JOIN<\/span> wp_postmeta pm2 <span class=\"cbb-keyword\">ON<\/span> wp_posts.ID = pm2.post_id\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">INNER<\/span> <span class=\"cbb-keyword\">JOIN<\/span> wp_postmeta pm3 <span class=\"cbb-keyword\">ON<\/span> wp_posts.ID = pm3.post_id\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">WHERE<\/span> post_type = <span class=\"cbb-string\">'post'<\/span> <span class=\"cbb-keyword\">AND<\/span> post_status = <span class=\"cbb-string\">'publish'<\/span>\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">AND<\/span> ( pm1.meta_key = <span class=\"cbb-string\">'_region'<\/span> <span class=\"cbb-keyword\">AND<\/span> pm1.meta_value = <span class=\"cbb-string\">'polnoc'<\/span> )\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">AND<\/span> ( pm2.meta_key = <span class=\"cbb-string\">'_poziom'<\/span> <span class=\"cbb-keyword\">AND<\/span> pm2.meta_value = <span class=\"cbb-string\">'b'<\/span> )\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">AND<\/span> ( pm3.meta_key = <span class=\"cbb-string\">'_aktywny'<\/span> <span class=\"cbb-keyword\">AND<\/span> pm3.meta_value = <span class=\"cbb-string\">'1'<\/span> )\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">GROUP<\/span> <span class=\"cbb-keyword\">BY<\/span> wp_posts.ID\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">ORDER<\/span> <span class=\"cbb-keyword\">BY<\/span> wp_posts.post_date <span class=\"cbb-keyword\">DESC<\/span><\/span><\/code><\/pre><\/figure>\n<p>Przyk\u0142ad zawiera trzy z\u0142\u0105czenia i cztery odwo\u0142ania do tabel, licz\u0105c <code>wp_posts<\/code>. Grupowanie po identyfikatorze wpisu zapobiega powielaniu ID przy wielu pasuj\u0105cych wierszach metadanych. Ani tekst SQL, ani liczba klauzul nie dowodz\u0105 odczytania 500 000 wierszy w celu zwr\u00f3cenia 40 wynik\u00f3w. Takie twierdzenie wymaga odtwarzalnych danych i planu wykonania.<\/p>\n<h2>Standardowe indeksy i mo\u017cliwe rozszerzenia<\/h2><p>Klucz g\u0142\u00f3wny jednoznacznie identyfikuje wiersz tabeli. Indeks prefiksowy przechowuje tylko pocz\u0105tek tekstu. Optymalizator bazy wybiera spos\u00f3b wyszukiwania i kolejno\u015b\u0107 z\u0142\u0105cze\u0144, a plan wykonania opisuje ten wyb\u00f3r.<\/p>\n<p>Standardowy schemat WordPressa ma klucz g\u0142\u00f3wny na <code>meta_id<\/code>, indeks na <code>post_id<\/code> i indeks prefiksowy na <code>meta_key<\/code> ze standardow\u0105 granic\u0105 191 znak\u00f3w. Rdze\u0144 nie tworzy indeksu na <code>meta_value<\/code>. LONGTEXT dopuszcza indeksy prefiksowe. Dodatkowy indeks mo\u017ce pom\u00f3c wybranym zapytaniom, lecz wymaga oceny rozk\u0142adu warto\u015bci, d\u0142ugo\u015bci kluczy, kosztu zapisu i wersji bazy.<\/p>\n<p>Optymalizator mo\u017ce rozpocz\u0105\u0107 od wpis\u00f3w albo od klucza metadanych ograniczaj\u0105cego wynik do niewielu wierszy. Dost\u0119p przez <code>post_id<\/code> to mo\u017cliwy plan, a nie niezmienna kolejno\u015b\u0107. Znaczenie maj\u0105 liczba pasuj\u0105cych wierszy na odwo\u0142anie i cz\u0119\u015b\u0107 pozostaj\u0105ca po zastosowaniu warunku. Nie istnieje uniwersalne minimum 30 wierszy metadanych na wpis.<\/p>\n<h2>Operatory i mo\u017cliwe koszty<\/h2>\n<table style=\"width:100%;border-collapse:collapse\">\n<thead>\n<tr><th style=\"vertical-align:top\">Klauzula<\/th><th>Mo\u017cliwy nak\u0142ad pracy<\/th><\/tr>\n<\/thead>\n<tbody>\n<tr><td style=\"white-space:nowrap;vertical-align:top\"><code>'compare' =&gt; '='<\/code><\/td><td>Por\u00f3wnanie tekstowe; wsp\u00f3\u0142dzielenie z\u0142\u0105czenia zale\u017cy od pozosta\u0142ych klauzul.<\/td><\/tr>\n<tr><td style=\"white-space:nowrap;vertical-align:top\"><code>'compare' =&gt; 'LIKE'<\/code><\/td><td>WordPress dodaje %&#8230;%, wyszukuj\u0105c warto\u015b\u0107 w dowolnym miejscu tekstu. Zwyk\u0142e wyszukiwanie indeksowe wed\u0142ug pocz\u0105tku warto\u015bci nie pasuje, lecz indeksy innych warunk\u00f3w nadal mog\u0105 pom\u00f3c.<\/td><\/tr>\n<tr><td style=\"white-space:nowrap;vertical-align:top\"><code>'type' =&gt; 'NUMERIC'<\/code><\/td><td>Przekszta\u0142ca tekst w liczb\u0119 ca\u0142kowit\u0105 ze znakiem przez CAST(&#8230; AS SIGNED); indeks tekstowej warto\u015bci nie obs\u0142uguje bezpo\u015brednio tego wyra\u017cenia liczbowego. Inne indeksy pozostaj\u0105 dost\u0119pne.<\/td><\/tr>\n<tr><td style=\"white-space:nowrap;vertical-align:top\"><code>'compare' =&gt; 'NOT EXISTS'<\/code><\/td><td>Test braku klucza przez LEFT JOIN i IS NULL; indeks i wcze\u015bniejsze zako\u0144czenie wyszukiwania mog\u0105 pom\u00f3c.<\/td><\/tr>\n<tr><td style=\"white-space:nowrap;vertical-align:top\"><code>'relation' =&gt; 'OR'<\/code><\/td><td>Musi pasowa\u0107 co najmniej jeden warunek; zgodne klauzule mog\u0105 wsp\u00f3\u0142dzieli\u0107 z\u0142\u0105czenie.<\/td><\/tr>\n<tr><td style=\"white-space:nowrap;vertical-align:top\"><code>'orderby' =&gt; 'meta_value'<\/code><\/td><td>Mo\u017ce wymaga\u0107 dodatkowego sortowania; u\u017cycie pami\u0119ci, dysku i tabel tymczasowych zale\u017cy od planu.<\/td><\/tr>\n<\/tbody>\n<\/table>\n<p><code>Using filesort<\/code> oznacza dodatkowe sortowanie zamiast wykorzystania kolejno\u015bci indeksu. Mimo nazwy sortowanie mo\u017ce pozosta\u0107 w pami\u0119ci. U\u017cycie dysku zale\u017cy od wielko\u015bci wyniku, ustawie\u0144 i implementacji bazy. <code>Using temporary<\/code> oznacza u\u017cycie tabeli tymczasowej podczas przetwarzania. Same etykiety nie dowodz\u0105 przekroczenia czasu ani konieczno\u015bci przebudowy.<\/p>\n<p>LEFT JOIN zachowuje wpis w wyniku po\u015brednim nawet bez pasuj\u0105cego wiersza metadanych. IS NULL wybiera nast\u0119pnie wpisy bez takiego dopasowania. Brak klucza mo\u017cna sprawdzi\u0107 przez <code>LEFT JOIN<\/code> i <code>IS NULL<\/code>. Indeks mo\u017ce przyspieszy\u0107 wyszukanie pasuj\u0105cego wiersza, a po trafieniu wykluczaj\u0105cym kandydata optymalizator mo\u017ce zako\u0144czy\u0107 dalsze szukanie. Twierdzenie, \u017ce indeks nie pomaga wykaza\u0107 braku, jest zatem b\u0142\u0119dne. Nadal znaczenie maj\u0105 operator WordPressa i wygenerowany SQL.<\/p>\n\n\n<!-- lw-flux-illu 10392-a3 -->\n<figure class=\"lw-illu\"><img src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/illustrationen\/flux-10392-a3.webp\" width=\"1120\" height=\"630\" loading=\"lazy\" decoding=\"async\" alt=\"Magnes wyci\u0105ga ig\u0142\u0119 prosto ze stogu, a drugi st\u00f3g jest przeszukiwany \u017ad\u017ab\u0142o po \u017ad\u017able. Tak samo wyszukiwanie z indeksem jest szybkie, a szukanie w dowolnym miejscu tekstu musi przejrze\u0107 wszystko.\"><figcaption>Magnes wyci\u0105ga ig\u0142\u0119 prosto ze stogu, a drugi st\u00f3g jest przeszukiwany \u017ad\u017ab\u0142o po \u017ad\u017able. Tak samo wyszukiwanie z indeksem jest szybkie, a szukanie w dowolnym miejscu tekstu musi przejrze\u0107 wszystko.<\/figcaption><\/figure>\n\n\n<h2>Metadane, taksonomia czy w\u0142asna tabela<\/h2>\n<p>Taksonomie pasuj\u0105 do wsp\u00f3lnych klasyfikacji, takich jak regiony lub grupy produkt\u00f3w. Standardowa tabela powi\u0105za\u0144 ma z\u0142o\u017cony klucz g\u0142\u00f3wny na <code>(object_id, term_taxonomy_id)<\/code>, dodatkowy indeks na <code>term_taxonomy_id<\/code> oraz kolumn\u0119 <code>term_order<\/code>. Zapytanie taksonomiczne r\u00f3wnie\u017c mo\u017ce wymaga\u0107 wielu z\u0142\u0105cze\u0144 lub podzapyta\u0144. Sama nazwa tabeli nie gwarantuje przyspieszenia.<\/p>\n<p>Metadane pozostaj\u0105 rozs\u0105dnym wyborem dla wielu niewielkich lub rzadko u\u017cywanych filtr\u00f3w. Cz\u0119sto przeszukiwane zakresy liczb i sortowane warto\u015bci mog\u0105 zyska\u0107 na osobnej tabeli z odpowiednimi typami kolumn i indeksami. Decyzj\u0119 powinny okre\u015bla\u0107 model danych i pomiar. P\u00f3\u017aniejszy odczyt metadanych mo\u017ce korzysta\u0107 z pami\u0119ci podr\u0119cznej lub zapytania zbiorczego; jeden odczyt SQL na pole nie jest uniwersalnym modelem kosztu.<\/p>\n<h2>Pomiar zamiast zgadywania<\/h2>\n<p>Po zwyk\u0142ym wywo\u0142aniu <code>WP_Query<\/code> w\u0142a\u015bciwo\u015b\u0107 <code>$query-&gt;request<\/code> zawiera wygenerowany SQL; zapytanie mo\u017ce ju\u017c wtedy by\u0107 wykonane. Filtr <code>posts_request<\/code> dzia\u0142a przed wys\u0142aniem g\u0142\u00f3wnego zapytania o wpisy. Zwyk\u0142e <code>EXPLAIN<\/code> pe\u0142nego SELECT przedstawia szacowany plan, nie zmierzony czas. Polecenia analizy z wykonaniem, zale\u017cne od bazy, naprawd\u0119 uruchamiaj\u0105 zapytanie i nale\u017c\u0105 do odpowiedniej kopii testowej.<\/p>\n<figure style=\"--cbb-digits:1\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"plain\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Text<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-plain\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\">EXPLAIN: plan szacowany\n<\/span><span class=\"cbb-line\">key       wybrany indeks\n<\/span><span class=\"cbb-line\">rows      szacowana liczba sprawdzanych wierszy\n<\/span><span class=\"cbb-line\">filtered  szacowany procent pozosta\u0142ych wierszy (MySQL)\n<\/span><span class=\"cbb-line\">Extra     dodatkowe operacje<\/span><\/code><\/pre><\/figure>\n<p><code>rows<\/code> jest oszacowaniem, a MySQL <code>filtered<\/code> szacuje procent pozostaj\u0105cy po warunku. Znaczenie maj\u0105 kolejno\u015b\u0107 z\u0142\u0105cze\u0144 i pozosta\u0142e wyniki po\u015brednie. Iloczyn wszystkich warto\u015bci rows ani sta\u0142y dodatek za z\u0142\u0105czenie nie dowodz\u0105 rzeczywistej liczby odczytanych wierszy. Rzetelne por\u00f3wnanie zapisuje wersj\u0119 bazy, schemat, indeksy, reprezentatywne dane, parametry oraz czasy bez dost\u0119pnych wcze\u015bniejszych wynik\u00f3w (zimna pami\u0119\u0107 podr\u0119czna) i z wynikami gotowymi do ponownego u\u017cycia (rozgrzana pami\u0119\u0107 podr\u0119czna).<\/p>\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n<h3>Czy podkre\u015blnik na pocz\u0105tku klucza, jak w _region, przyspiesza zapytanie?<\/h3>\n<p>Nie. WordPress zwykle uznaje klucze metadanych z pocz\u0105tkowym podkre\u015blnikiem za chronione i ukrywa takie pola w klasycznym edytorze p\u00f3l w\u0142asnych; filtry mog\u0105 zmieni\u0107 zachowanie. To konwencja aplikacji, nie uprawnienie bazy ani specjalna w\u0142a\u015bciwo\u015b\u0107 indeksu.<\/p>\n<h3>Czy trwa\u0142a pami\u0119\u0107 podr\u0119czna obiekt\u00f3w pomaga przy kosztownym meta_query?<\/h3>\n<p>Trafienie w pami\u0119\u0107 podr\u0119czn\u0105 mo\u017ce rzeczywi\u015bcie oszcz\u0119dzi\u0107 g\u0142\u00f3wne zapytanie SQL. WordPress 6.1 wprowadzi\u0142 pami\u0119tanie wynik\u00f3w WP_Query, a trwa\u0142a pami\u0119\u0107 obiektowa umo\u017cliwia ponowne u\u017cycie mi\u0119dzy \u017c\u0105daniami. Znaczenie maj\u0105 mo\u017cliwo\u015b\u0107 buforowania, ustawienie <code>cache_results<\/code>, usuwanie danych z pami\u0119ci podr\u0119cznej i oznaczanie nieaktualnych wynik\u00f3w jako nienadaj\u0105cych si\u0119 do u\u017cycia. Oznaczenie pami\u0119ci wpis\u00f3w jako nieaktualnej zmienia wsp\u00f3lny znacznik wersji. Mo\u017ce to uniewa\u017cni\u0107 tak\u017ce zapisane wyniki zapyta\u0144 obejmuj\u0105ce inne wpisy ni\u017c edytowany. Bezpo\u015brednie zmiany SQL mog\u0105 natomiast pozostawi\u0107 nieaktualn\u0105 pami\u0119\u0107.<\/p>\n<p>Trzy niezale\u017cne filtry z pi\u0119cioma warto\u015bciami ka\u017cdy daj\u0105 125 kombinacji przy ustawieniu wszystkich trzech. Obliczenia dotycz\u0105 tylko rzeczywi\u015bcie \u017c\u0105danych kombinacji; popularne zestawy mog\u0105 osi\u0105ga\u0107 wysoki odsetek trafie\u0144. Cz\u0119ste zmiany mog\u0105 ograniczy\u0107 ponowne u\u017cycie, ale nie oznaczaj\u0105 automatycznie bezu\u017cyteczno\u015bci pami\u0119ci podr\u0119cznej.<\/p>\n<p>Wa\u017cne s\u0105 czasy zar\u00f3wno przy zimnej, jak i przy rozgrzanej pami\u0119ci podr\u0119cznej. Plan wyja\u015bnia mo\u017cliwy koszt braku trafienia, a rzeczywisty ruch i odsetek trafie\u0144 pokazuj\u0105 cz\u0119sto\u015b\u0107 tego kosztu. Pami\u0119\u0107 ca\u0142ych stron zale\u017cy r\u00f3wnie\u017c od obs\u0142ugi URL i parametr\u00f3w zapytania, uniewa\u017cniania oraz konfiguracji. Dob\u00f3r pami\u0119ci i przebudowa schematu powinny wynika\u0107 z pomiar\u00f3w, nie z nieudokumentowanego skrajnego przyk\u0142adu.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul><li><a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/\" rel=\"noopener noreferrer\" target=\"_blank\">WordPress: WP_Query<\/a><\/li><li><a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_meta_query\/find_compatible_table_alias\/\" rel=\"noopener noreferrer\" target=\"_blank\">WordPress: find_compatible_table_alias<\/a><\/li><li><a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_meta_query\/get_sql_for_clause\/\" rel=\"noopener noreferrer\" target=\"_blank\">WordPress: get_sql_for_clause<\/a><\/li><li><a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.4\/en\/explain-output.html\" rel=\"noopener noreferrer\" target=\"_blank\">MySQL: Format wyniku EXPLAIN<\/a><\/li><li><a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.4\/en\/order-by-optimization.html\" rel=\"noopener noreferrer\" target=\"_blank\">MySQL: Optymalizacja sortowania<\/a><\/li><li><a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.4\/en\/column-indexes.html\" rel=\"noopener noreferrer\" target=\"_blank\">MySQL: Indeksy kolumn<\/a><\/li><li><a href=\"https:\/\/make.wordpress.org\/core\/2022\/10\/07\/improvements-to-wp_query-performance-in-6-1\/\" rel=\"noopener noreferrer\" target=\"_blank\">WordPress: Pami\u0119\u0107 wynik\u00f3w WP_Query od 6.1<\/a><\/li><li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/clean_post_cache\/\" rel=\"noopener noreferrer\" target=\"_blank\">WordPress: clean_post_cache<\/a><\/li><li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/is_protected_meta\/\" rel=\"noopener noreferrer\" target=\"_blank\">WordPress: is_protected_meta<\/a><\/li><\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Filtry metadanych WordPressa mog\u0105 wymaga\u0107 wielu z\u0142\u0105cze\u0144, lecz sama ich liczba nie okre\u015bla czasu dzia\u0142ania. Przyk\u0142ady wyja\u015bniaj\u0105 indeksy, operatory, plany zapyta\u0144 i pomiary z dost\u0119pnymi wynikami w pami\u0119ci podr\u0119cznej oraz bez nich.<\/p>\n","protected":false},"author":1,"featured_media":31651,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25],"tags":[92262,92283],"class_list":["post-10396","post","type-post","status-publish","format-standard","hentry","category-wordpress-plugins-tricks-pl","tag-mysql-pl","tag-web-performance-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Analiza wolnych filtr\u00f3w WordPressa: jak meta_query odpytuje baz\u0119 danych | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Jak WP_Query buduje z meta_query z\u0142\u0105czenia, dlaczego meta_value nie da si\u0119 sensownie zaindeksowa\u0107 i kt\u00f3re filtry nale\u017c\u0105 do taksonomii.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Analiza wolnych filtr\u00f3w WordPressa: jak meta_query odpytuje baz\u0119 danych | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Jak WP_Query buduje z meta_query z\u0142\u0105czenia, dlaczego meta_value nie da si\u0119 sensownie zaindeksowa\u0107 i kt\u00f3re filtry nale\u017c\u0105 do taksonomii.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-12T16:10:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-26T12:49:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10396.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Analiza wolnych filtr\u00f3w WordPressa: jak meta_query odpytuje baz\u0119 danych\",\"datePublished\":\"2026-09-12T16:10:00+00:00\",\"dateModified\":\"2026-10-26T12:49:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\\\/\"},\"wordCount\":1315,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10396.png\",\"keywords\":[\"MySQL\",\"Web Performance\"],\"articleSection\":[\"Wtyczki i triki WordPress\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\\\/\",\"name\":\"Analiza wolnych filtr\u00f3w WordPressa: jak meta_query odpytuje baz\u0119 danych | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10396.png\",\"datePublished\":\"2026-09-12T16:10:00+00:00\",\"dateModified\":\"2026-10-26T12:49:06+00:00\",\"description\":\"Jak WP_Query buduje z meta_query z\u0142\u0105czenia, dlaczego meta_value nie da si\u0119 sensownie zaindeksowa\u0107 i kt\u00f3re filtry nale\u017c\u0105 do taksonomii.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10396.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10396.png\",\"width\":1200,\"height\":630,\"caption\":\"Analiza wolnych filtr\u00f3w WordPressa: jak meta_query odpytuje baz\u0119 danych\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Analiza wolnych filtr\u00f3w WordPressa: jak meta_query odpytuje baz\u0119 danych\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Analiza wolnych filtr\u00f3w WordPressa: jak meta_query odpytuje baz\u0119 danych | Lukas Wojcik","description":"Jak WP_Query buduje z meta_query z\u0142\u0105czenia, dlaczego meta_value nie da si\u0119 sensownie zaindeksowa\u0107 i kt\u00f3re filtry nale\u017c\u0105 do taksonomii.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\/","og_locale":"en_US","og_type":"article","og_title":"Analiza wolnych filtr\u00f3w WordPressa: jak meta_query odpytuje baz\u0119 danych | Lukas Wojcik","og_description":"Jak WP_Query buduje z meta_query z\u0142\u0105czenia, dlaczego meta_value nie da si\u0119 sensownie zaindeksowa\u0107 i kt\u00f3re filtry nale\u017c\u0105 do taksonomii.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-12T16:10:00+00:00","article_modified_time":"2026-10-26T12:49:06+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10396.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Analiza wolnych filtr\u00f3w WordPressa: jak meta_query odpytuje baz\u0119 danych","datePublished":"2026-09-12T16:10:00+00:00","dateModified":"2026-10-26T12:49:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\/"},"wordCount":1315,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10396.png","keywords":["MySQL","Web Performance"],"articleSection":["Wtyczki i triki WordPress"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\/","name":"Analiza wolnych filtr\u00f3w WordPressa: jak meta_query odpytuje baz\u0119 danych | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10396.png","datePublished":"2026-09-12T16:10:00+00:00","dateModified":"2026-10-26T12:49:06+00:00","description":"Jak WP_Query buduje z meta_query z\u0142\u0105czenia, dlaczego meta_value nie da si\u0119 sensownie zaindeksowa\u0107 i kt\u00f3re filtry nale\u017c\u0105 do taksonomii.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10396.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10396.png","width":1200,"height":630,"caption":"Analiza wolnych filtr\u00f3w WordPressa: jak meta_query odpytuje baz\u0119 danych"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/analiza-wolnych-filtrow-wordpressa-jak-meta_query-odpytuje-baze-danych\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Analiza wolnych filtr\u00f3w WordPressa: jak meta_query odpytuje baz\u0119 danych"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10396","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=10396"}],"version-history":[{"count":8,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10396\/revisions"}],"predecessor-version":[{"id":27538,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10396\/revisions\/27538"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/31651"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10396"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=10396"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10396"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}