{"id":10394,"date":"2026-09-12T12:30:00","date_gmt":"2026-09-12T10:30:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=10394"},"modified":"2026-10-26T13:49:06","modified_gmt":"2026-10-26T12:49:06","slug":"langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\/","title":{"rendered":"Langsame WordPress-Filter untersuchen: Wie meta_query die Datenbank abfragt"},"content":{"rendered":"<p>Ein Filter mit drei individuellen Feldern kann drei Joins auf <code>wp_postmeta<\/code> erzeugen. Ein Join verkn\u00fcpft Tabellenzeilen; ein Alias gibt einer Verwendung derselben Tabelle einen eigenen Namen. Die Anzahl h\u00e4ngt von den Bedingungen und deren Verkn\u00fcpfung ab, nicht allein von der Zahl der Felder.<\/p>\n<p>Metadaten speichern zus\u00e4tzliche Angaben zu einem Beitrag, meist als Feldname und Wert. WP_Query erstellt WordPress-Beitragsabfragen; SQL ist die Abfragesprache der Datenbank. Ein Index ist eine zus\u00e4tzliche Suchstruktur, die passende Zeilen schneller finden kann. Ein Cache h\u00e4lt fr\u00fchere Ergebnisse zur Wiederverwendung bereit.<\/p>\n<p>Entscheidend ist der Aufwand der tats\u00e4chlichen Abfrage. Datenverteilung, Indizes, Ergebnismenge, Sortierung und Cachetreffer beeinflussen die Kosten. Eine gro\u00dfe Metadatentabelle ist ein Anlass zur Messung, noch kein Beweis f\u00fcr langsame Filter.<\/p>\n<figure class=\"lw-diagram\">\n<img decoding=\"async\" alt=\"Drei Gleichheitspr\u00fcfungen: AND nutzt drei Joins, kompatibles OR einen. Die Ergebnislogik unterscheidet sich; das ist kein Laufzeitvergleich.\" height=\"580\" loading=\"lazy\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/quality-10394-20261024.png\" width=\"1120\"\/>\n<figcaption>Drei Gleichheitspr\u00fcfungen: AND nutzt drei Joins, kompatibles OR einen. Die Ergebnislogik unterscheidet sich; das ist kein Laufzeitvergleich.<\/figcaption>\n<\/figure>\n<h2>Was WP_Query aus dem Array erzeugt<\/h2>\n<p>Drei Gleichheitspr\u00fcfungen auf unterschiedliche Schl\u00fcssel mit <code>AND<\/code> erzeugen normalerweise drei Metadaten-Aliase. Kompatible Klauseln derselben Gruppe k\u00f6nnen einen Alias teilen: Dieselben drei Pr\u00fcfungen mit <code>OR<\/code> ben\u00f6tigen im gepr\u00fcften WordPress-Core 7.1.3 einen Join. Damit \u00e4ndert sich jedoch die Bedeutung von \u201ealle Bedingungen\u201c zu \u201emindestens eine Bedingung\u201c. AND durch OR zu ersetzen ist daher keine zul\u00e4ssige Leistungsoptimierung. Das folgende SQL zeigt den AND-Fall vereinfacht mit lesbaren Aliasnamen.<\/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\">'nord'<\/span> )\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">AND<\/span> ( pm2.meta_key = <span class=\"cbb-string\">'_stufe'<\/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\">'_aktiv'<\/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>Das Beispiel enth\u00e4lt drei Joins und einschlie\u00dflich <code>wp_posts<\/code> vier Tabellenreferenzen. Die Gruppierung nach Beitrags-ID verhindert doppelte IDs bei mehreren passenden Metadatenzeilen. Weder SQL-Text noch Klauselzahl belegen 500.000 gelesene Zeilen f\u00fcr 40 Ergebnisse. Daf\u00fcr w\u00e4ren ein reproduzierbarer Datenbestand und ein Ausf\u00fchrungsplan erforderlich.<\/p>\n<h2>Standardindizes und m\u00f6gliche Erg\u00e4nzungen<\/h2><p>Ein Prim\u00e4rschl\u00fcssel kennzeichnet eine Tabellenzeile eindeutig. Ein Pr\u00e4fixindex speichert nur den Anfang eines Textwerts. Der Datenbankoptimierer w\u00e4hlt Zugriffswege und Join-Reihenfolge; ein Ausf\u00fchrungsplan beschreibt diese Auswahl.<\/p>\n<p>Das WordPress-Standardschema enth\u00e4lt den Prim\u00e4rschl\u00fcssel auf <code>meta_id<\/code>, einen Index auf <code>post_id<\/code> und einen Pr\u00e4fixindex auf <code>meta_key<\/code> mit \u00fcblicher Grenze von 191 Zeichen. Core legt keinen Index auf <code>meta_value<\/code> an. LONGTEXT erlaubt durchaus Pr\u00e4fixindizes. Ein zus\u00e4tzlicher passender Index kann einzelne Abfragen verbessern; Werteverteilung, Schl\u00fcssell\u00e4ngen, Schreibkosten und Datenbankversion geh\u00f6ren jedoch zur Pr\u00fcfung.<\/p>\n<p>Der Optimierer kann bei Beitr\u00e4gen oder einem Metadatenschl\u00fcssel beginnen, der die Ergebnismenge stark eingrenzt. Der Zugriff \u00fcber <code>post_id<\/code> ist ein m\u00f6glicher Plan, keine feste Reihenfolge. Wichtig sind passende Zeilen je Zugriff und der nach einer Bedingung verbleibende Anteil. Eine allgemeine Mindestzahl von 30 Metadatenzeilen je Beitrag gibt es nicht.<\/p>\n<h2>Operatoren und m\u00f6gliche Kosten<\/h2>\n<table style=\"width:100%;border-collapse:collapse\">\n<thead>\n<tr><th style=\"vertical-align:top\">Klausel<\/th><th>M\u00f6glicher Aufwand<\/th><\/tr>\n<\/thead>\n<tbody>\n<tr><td style=\"white-space:nowrap;vertical-align:top\"><code>'compare' =&gt; '='<\/code><\/td><td>Zeichenkettenvergleich; m\u00f6gliche Join-Wiederverwendung h\u00e4ngt von den \u00fcbrigen Klauseln ab.<\/td><\/tr>\n<tr><td style=\"white-space:nowrap;vertical-align:top\"><code>'compare' =&gt; 'LIKE'<\/code><\/td><td>WordPress erg\u00e4nzt %&#8230;% und sucht damit an beliebiger Stelle im Text. Eine gew\u00f6hnliche Indexsuche \u00fcber den Wertanfang passt nicht, Indizes f\u00fcr andere Bedingungen k\u00f6nnen weiterhin helfen.<\/td><\/tr>\n<tr><td style=\"white-space:nowrap;vertical-align:top\"><code>'type' =&gt; 'NUMERIC'<\/code><\/td><td>Wandelt den Text mit CAST(&#8230; AS SIGNED) in eine ganze Zahl mit Vorzeichen um; ein Textwertindex bedient diesen Zahlenausdruck nicht direkt. Andere Indizes bleiben nutzbar.<\/td><\/tr>\n<tr><td style=\"white-space:nowrap;vertical-align:top\"><code>'compare' =&gt; 'NOT EXISTS'<\/code><\/td><td>Pr\u00fcfung auf fehlenden Schl\u00fcssel \u00fcber LEFT JOIN und IS NULL; indizierte Zugriffe und fr\u00fcher Abbruch k\u00f6nnen helfen.<\/td><\/tr>\n<tr><td style=\"white-space:nowrap;vertical-align:top\"><code>'relation' =&gt; 'OR'<\/code><\/td><td>Mindestens eine Bedingung muss passen; kompatible Klauseln k\u00f6nnen einen Join teilen.<\/td><\/tr>\n<tr><td style=\"white-space:nowrap;vertical-align:top\"><code>'orderby' =&gt; 'meta_value'<\/code><\/td><td>Kann zus\u00e4tzliche Sortierung ben\u00f6tigen; Speicher-, Platten- und Tempor\u00e4rtabellenbedarf h\u00e4ngen vom Plan ab.<\/td><\/tr>\n<\/tbody>\n<\/table>\n<p><code>Using filesort<\/code> bedeutet eine zus\u00e4tzliche Sortierung statt Nutzung der Indexreihenfolge. Trotz des Namens kann die Sortierung im Arbeitsspeicher bleiben. Plattenzugriffe h\u00e4ngen von Ergebnismenge, Einstellungen und Datenbankimplementierung ab. <code>Using temporary<\/code> bedeutet, dass bei der Verarbeitung eine vor\u00fcbergehende Tabelle verwendet wird. Beide Angaben allein beweisen weder eine Zeit\u00fcberschreitung noch einen notwendigen Umbau.<\/p>\n<p>Ein LEFT JOIN beh\u00e4lt den Beitrag auch ohne passende Metadatenzeile im Zwischenergebnis. IS NULL w\u00e4hlt anschlie\u00dfend Beitr\u00e4ge ohne diesen Treffer aus. Ein fehlender Schl\u00fcssel l\u00e4sst sich \u00fcber <code>LEFT JOIN<\/code> und <code>IS NULL<\/code> feststellen. Ein Index kann die Suche nach einem Treffer beschleunigen; nach einem ausschlie\u00dfenden Treffer kann der Optimierer die weitere Suche f\u00fcr diesen Kandidaten beenden. Die Behauptung, Indizes k\u00f6nnten beim Nachweis fehlender Werte nicht helfen, ist deshalb falsch. Entscheidend bleiben der verwendete WordPress-Operator und das erzeugte 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=\"Ein Magnet zieht die Nadel direkt aus dem Heuhaufen, daneben wird ein zweiter Haufen Halm f\u00fcr Halm durchsucht. Genauso findet eine Suche \u00fcber einen Index schnell, eine Suche irgendwo im Text muss alles durchgehen.\"><figcaption>Ein Magnet zieht die Nadel direkt aus dem Heuhaufen, daneben wird ein zweiter Haufen Halm f\u00fcr Halm durchsucht. Genauso findet eine Suche \u00fcber einen Index schnell, eine Suche irgendwo im Text muss alles durchgehen.<\/figcaption><\/figure>\n\n\n<h2>Metadaten, Taxonomie oder eigene Tabelle<\/h2>\n<p>Taxonomien eignen sich f\u00fcr gemeinsame Einordnungen wie Regionen oder Produktgruppen. Die Standardtabelle f\u00fcr Zuordnungen hat einen zusammengesetzten Prim\u00e4rschl\u00fcssel auf <code>(object_id, term_taxonomy_id)<\/code>, einen zus\u00e4tzlichen Index auf <code>term_taxonomy_id<\/code> und die weitere Spalte <code>term_order<\/code>. Auch Taxonomieabfragen k\u00f6nnen mehrere Joins oder Unterabfragen ben\u00f6tigen. Der Tabellenname garantiert keine Beschleunigung.<\/p>\n<p>Metadaten bleiben f\u00fcr viele kleine oder selten genutzte Filter angemessen. H\u00e4ufig abgefragte Zahlenbereiche und sortierte Werte k\u00f6nnen von einer eigenen Tabelle mit passenden Datentypen und Indizes profitieren. Datenmodell und Messung sollten die Entscheidung bestimmen. Das sp\u00e4tere Lesen von Metadaten kann aus einem Objektcache oder einer Sammelabfrage erfolgen; ein einzelner SQL-Zugriff je Feld ist kein allgemeines Kostenmodell.<\/p>\n<h2>Messen statt sch\u00e4tzen<\/h2>\n<p>Nach einem gew\u00f6hnlichen Aufruf von <code>WP_Query<\/code> enth\u00e4lt <code>$query-&gt;request<\/code> das erzeugte SQL; die Abfrage kann dann bereits ausgef\u00fchrt worden sein. Der Filter <code>posts_request<\/code> liegt vor dem Versand der Hauptabfrage. Ein einfaches <code>EXPLAIN<\/code> des vollst\u00e4ndigen SELECT liefert einen gesch\u00e4tzten Plan, keine gemessene Laufzeit. Datenbankspezifische Analysebefehle mit Ausf\u00fchrung starten die Abfrage tats\u00e4chlich und geh\u00f6ren auf eine geeignete Testkopie.<\/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: gesch\u00e4tzter Plan\n<\/span><span class=\"cbb-line\">key       gew\u00e4hlter Index\n<\/span><span class=\"cbb-line\">rows      gesch\u00e4tzte untersuchte Zeilen\n<\/span><span class=\"cbb-line\">filtered  gesch\u00e4tzter verbleibender Prozentsatz (MySQL)\n<\/span><span class=\"cbb-line\">Extra     zus\u00e4tzliche Operationen<\/span><\/code><\/pre><\/figure>\n<p><code>rows<\/code> ist eine Sch\u00e4tzung; MySQLs <code>filtered<\/code> sch\u00e4tzt den nach einer Bedingung verbleibenden Prozentsatz. Join-Reihenfolge und verbleibende Zwischenergebnisse z\u00e4hlen mit. Das Produkt aller rows-Werte oder ein fixer Zuschlag je Join belegt keine tats\u00e4chlich gelesene Gesamtzeilenzahl. Ein belastbarer Vergleich h\u00e4lt Datenbankversion, Schema, Indizes, repr\u00e4sentative Daten, Abfrageparameter und Laufzeiten ohne vorhandene Zwischenergebnisse (kalter Cache) und mit wiederverwendbaren Ergebnissen (warmer Cache) fest.<\/p>\n<div class=\"lw-faq\">\n<h2>Fragen und Antworten<\/h2>\n<h3>Macht ein Unterstrich vor dem Schl\u00fcssel, wie bei _region, die Abfrage schneller?<\/h3>\n<p>Nein. WordPress behandelt Metadatenschl\u00fcssel mit f\u00fchrendem Unterstrich normalerweise als gesch\u00fctzt und blendet diese im klassischen Feldeditor aus; Filter k\u00f6nnen das Verhalten \u00e4ndern. Das ist eine Anwendungskonvention, keine Datenbankberechtigung und keine besondere Indexfunktion.<\/p>\n<h3>Hilft ein persistenter Objektcache gegen eine teure meta_query?<\/h3>\n<p>Ein Cachetreffer kann die Hauptabfrage tats\u00e4chlich einsparen. Seit WordPress 6.1 gibt es Ergebnis-Caching f\u00fcr WP_Query; ein persistenter Objektcache bewahrt Ergebnisse auch f\u00fcr sp\u00e4tere Webanfragen auf. Entscheidend bleiben die Cache-Eignung der Abfrage, die Einstellung <code>cache_results<\/code>, das Entfernen von Cacheeintr\u00e4gen und das Ung\u00fcltigmachen veralteter Ergebnisse. Wenn WordPress Beitrags-Caches als veraltet kennzeichnet, \u00e4ndert sich eine gemeinsame Versionsmarkierung. Dadurch k\u00f6nnen auch gespeicherte Abfrageergebnisse \u00fcber den bearbeiteten Beitrag hinaus ung\u00fcltig werden. Direkte SQL-\u00c4nderungen k\u00f6nnen dagegen veraltete Cacheinhalte hinterlassen.<\/p>\n<p>Drei unabh\u00e4ngige Filter mit je f\u00fcnf ausw\u00e4hlbaren Werten ergeben 125 Kombinationen, wenn alle drei gesetzt sind. Berechnet werden m\u00fcssen nur tats\u00e4chlich angefragte Kombinationen; h\u00e4ufige Kombinationen k\u00f6nnen eine hohe Trefferrate erreichen. Regelm\u00e4\u00dfige \u00c4nderungen verringern m\u00f6glicherweise die Wiederverwendung, machen Caching jedoch nicht automatisch nutzlos.<\/p>\n<p>Kalte und warme Laufzeiten sind beide relevant. Der Abfrageplan erkl\u00e4rt m\u00f6gliche Kosten eines Cachefehlers; reale Aufrufe und Trefferraten zeigen deren H\u00e4ufigkeit. Ein Seitencache h\u00e4ngt zus\u00e4tzlich von der Behandlung der Seitenadresse und ihrer Abfrageparameter, dem Ung\u00fcltigmachen veralteter Ergebnisse und der Konfiguration ab. Cacheeinsatz und Schemaumbau sollten auf Messungen statt auf einem unbelegten Extrembeispiel beruhen.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>Quellen<\/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: Ausgabeformat von 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: Optimierung der Sortierung<\/a><\/li><li><a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.4\/en\/column-indexes.html\" rel=\"noopener noreferrer\" target=\"_blank\">MySQL: Spaltenindizes<\/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: Zwischenspeicherung von WP_Query seit 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>Metadatenfilter in WordPress k\u00f6nnen mehrere Joins ben\u00f6tigen. Deren Anzahl allein sagt wenig \u00fcber die Laufzeit aus. Beispiele erkl\u00e4ren Indizes, Operatoren, Abfragepl\u00e4ne und Messungen mit und ohne Cachetreffer.<\/p>\n","protected":false},"author":1,"featured_media":31649,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[92256,92292],"class_list":["post-10394","post","type-post","status-publish","format-standard","hentry","category-wordpress-plugins-tricks-de","tag-mysql-de","tag-web-performance-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Langsame WordPress-Filter untersuchen: Wie meta_query die Datenbank abfragt | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Wie WP_Query aus meta_query Verbindungen baut, warum sich meta_value nicht sinnvoll indizieren l\u00e4sst und welche Filter stattdessen in eine Taxonomie geh\u00f6ren.\" \/>\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\/de\/wordpress-plugins-tricks-de\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Langsame WordPress-Filter untersuchen: Wie meta_query die Datenbank abfragt | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Wie WP_Query aus meta_query Verbindungen baut, warum sich meta_value nicht sinnvoll indizieren l\u00e4sst und welche Filter stattdessen in eine Taxonomie geh\u00f6ren.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-12T10:30: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-10394.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\\\/de\\\/wordpress-plugins-tricks-de\\\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Langsame WordPress-Filter untersuchen: Wie meta_query die Datenbank abfragt\",\"datePublished\":\"2026-09-12T10:30:00+00:00\",\"dateModified\":\"2026-10-26T12:49:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\\\/\"},\"wordCount\":1229,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10394.png\",\"keywords\":[\"MySQL\",\"Web Performance\"],\"articleSection\":[\"WordPress-Plugins &amp; Tricks\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\\\/\",\"name\":\"Langsame WordPress-Filter untersuchen: Wie meta_query die Datenbank abfragt | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10394.png\",\"datePublished\":\"2026-09-12T10:30:00+00:00\",\"dateModified\":\"2026-10-26T12:49:06+00:00\",\"description\":\"Wie WP_Query aus meta_query Verbindungen baut, warum sich meta_value nicht sinnvoll indizieren l\u00e4sst und welche Filter stattdessen in eine Taxonomie geh\u00f6ren.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10394.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10394.png\",\"width\":1200,\"height\":630,\"caption\":\"Langsame WordPress-Filter untersuchen: Wie meta_query die Datenbank abfragt\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Langsame WordPress-Filter untersuchen: Wie meta_query die Datenbank abfragt\"}]},{\"@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":"Langsame WordPress-Filter untersuchen: Wie meta_query die Datenbank abfragt | Lukas Wojcik","description":"Wie WP_Query aus meta_query Verbindungen baut, warum sich meta_value nicht sinnvoll indizieren l\u00e4sst und welche Filter stattdessen in eine Taxonomie geh\u00f6ren.","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\/de\/wordpress-plugins-tricks-de\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\/","og_locale":"en_US","og_type":"article","og_title":"Langsame WordPress-Filter untersuchen: Wie meta_query die Datenbank abfragt | Lukas Wojcik","og_description":"Wie WP_Query aus meta_query Verbindungen baut, warum sich meta_value nicht sinnvoll indizieren l\u00e4sst und welche Filter stattdessen in eine Taxonomie geh\u00f6ren.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-12T10:30: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-10394.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\/de\/wordpress-plugins-tricks-de\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Langsame WordPress-Filter untersuchen: Wie meta_query die Datenbank abfragt","datePublished":"2026-09-12T10:30:00+00:00","dateModified":"2026-10-26T12:49:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\/"},"wordCount":1229,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10394.png","keywords":["MySQL","Web Performance"],"articleSection":["WordPress-Plugins &amp; Tricks"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\/","name":"Langsame WordPress-Filter untersuchen: Wie meta_query die Datenbank abfragt | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10394.png","datePublished":"2026-09-12T10:30:00+00:00","dateModified":"2026-10-26T12:49:06+00:00","description":"Wie WP_Query aus meta_query Verbindungen baut, warum sich meta_value nicht sinnvoll indizieren l\u00e4sst und welche Filter stattdessen in eine Taxonomie geh\u00f6ren.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10394.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10394.png","width":1200,"height":630,"caption":"Langsame WordPress-Filter untersuchen: Wie meta_query die Datenbank abfragt"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/langsame-wordpress-filter-untersuchen-wie-meta_query-die-datenbank-abfragt\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Langsame WordPress-Filter untersuchen: Wie meta_query die Datenbank abfragt"}]},{"@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\/10394","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=10394"}],"version-history":[{"count":8,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10394\/revisions"}],"predecessor-version":[{"id":27537,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10394\/revisions\/27537"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/31649"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10394"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=10394"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10394"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}