{"id":12380145,"date":"2026-03-20T23:07:17","date_gmt":"2026-03-20T15:07:17","guid":{"rendered":"https:\/\/www.likacloud.com\/knowledge\/wp_query-%e5%85%a8%e9%9d%a2%e8%a7%a3%e6%9e%90%ef%bc%9a%e7%b2%be%e5%87%86%e6%8e%a7%e5%88%b6-wordpress-%e4%b8%bb%e9%a2%98%e5%86%85%e5%ae%b9%e5%be%aa%e7%8e%af\/"},"modified":"2026-06-05T01:16:24","modified_gmt":"2026-06-04T17:16:24","slug":"wp-query-complete-guide-wordpress-theme-content-loop","status":"publish","type":"knowledge_post","link":"https:\/\/www.likacloud.com\/de\/knowledge\/wordpress\/wp-query-complete-guide-wordpress-theme-content-loop\/","title":{"rendered":"Ausf\u00fchrliche Analyse von WP_Query: Pr\u00e4zise Steuerung der Inhaltszusammenstellung in WordPress-Themes"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Bei der Entwicklung von WordPress-Themen ist die Inhaltszirkulation der Kernmechanismus, der die dynamische Anzeige von Seiten erm\u00f6glicht. Der Standard-Zyklus ist zwar einfach zu verwenden, erf\u00fcllt jedoch nicht alle Anforderungen \u2013 insbesondere bei der Gestaltung von mehreren Bereichen auf der Startseite, der Anzeige benutzerdefinierter Artikeltypen oder komplexen Suchfunktionen. In solchen F\u00e4llen ist es wichtig, das Thema der Inhaltszirkulation gr\u00fcndlich zu verstehen und gegebenenfalls anzupassen. <code data-no-auto-translation=\"\">WP_Query<\/code> Klassen sind der Schl\u00fcssel daf\u00fcr, dass Entwickler eine pr\u00e4zise Kontrolle \u00fcber den Inhalt erlangen k\u00f6nnen. Sie erm\u00f6glichen es, beliebige Artikel, Seiten oder benutzerdefinierte Artikeltypen aus der Datenbank abzurufen, die bestimmten Kriterien entsprechen, und die Ausgabe dieser Inhalte vollst\u00e4ndig zu steuern. Sie bilden die Grundlage f\u00fcr die Erstellung fortgeschrittener Themenfunktionen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Verst\u00e4ndnis des Kernparameter-Systems von WP_Query<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code data-no-auto-translation=\"\">WP_Query<\/code> Die St\u00e4rke dieser Methode liegt darin, dass sie eine umfangreiche Liste von Parametern entgegennimmt, mit denen der Inhalt der Datenbank pr\u00e4zise gefiltert werden kann. Das Verst\u00e4ndnis der Kategorien und des Gebrauchs dieser Parameter ist der erste Schritt zur Erstellung effizienter Abfragen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Basische Abfragen und Pagierungsparameter<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die am h\u00e4ufigsten verwendeten Parameter dienen dazu, den grundlegenden Umfang der Abfrage sowie die Funktion zur Paginierung zu definieren. Zum Beispiel\u2026<code data-no-auto-translation=\"\">post_type<\/code> Die Parameter bestimmen, ob das Objekt der Abfrage ein Artikel ist.<code data-no-auto-translation=\"\">post<\/code>Seiten (Pages)<code data-no-auto-translation=\"\">page<\/code>Oder irgendeine registrierte, benutzerdefinierte Art von Artikel.<code data-no-auto-translation=\"\">posts_per_page<\/code> und <code data-no-auto-translation=\"\">paged<\/code> Sie steuern gemeinsam die Logik der Seitenverteilung (Pagination).<\/p>\n<!-- AUTO_INTERNAL_LINKS_START --><p>Empfohlene Lekt\u00fcre <a href=\"https:\/\/www.likacloud.com\/es\/knowledge\/wordpress\/how-to-develop-a-high-quality-wordpress-theme-from-scratch\/\">Ich zeige Ihnen Schritt f\u00fcr Schritt, wie Sie von Grund auf ein hochwertiges WordPress-Theme entwickeln.<\/a>\u3002<\/p><!-- AUTO_INTERNAL_LINKS_END -->\n\n\n\n\n<pre class=\"wp-block-code\" data-no-auto-translation=\"\"><code class=\"language-php\" data-no-auto-translation=\"\">$args = array(\n    \/\/ \u6307\u5b9a\u67e5\u8be2\u4ea7\u54c1\u7c7b\u578b\n    &#039;post_type&#039;      =&gt; &#039;product&#039;,\n    \/\/ \u6bcf\u9875\u663e\u793a8\u4e2a\u9879\u76ee\n    &#039;posts_per_page&#039; =&gt; 8,\n    \/\/ \u83b7\u53d6\u7b2c2\u9875\u7684\u5185\u5bb9\n    &#039;paged&#039;          =&gt; 2,\n    \/\/ \u6309\u7167\u53d1\u5e03\u65e5\u671f\u964d\u5e8f\u6392\u5217\n    &#039;orderby&#039;        =&gt; &#039;date&#039;,\n    &#039;order&#039;          =&gt; &#039;DESC&#039;,\n);\n$product_query = new WP_Query( $args );<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Klassifikationssysteme und Metadaten-Abfrageparameter<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr komplexere Filterkriterien\u2026<code data-no-auto-translation=\"\">tax_query<\/code> und <code data-no-auto-translation=\"\">meta_query<\/code> Parameter sind unerl\u00e4sslich.<code data-no-auto-translation=\"\">tax_query<\/code> Dient zum Verarbeiten von Abfragen bez\u00fcglich Kategorien (Category), Tags (Tag) sowie jeglicher benutzerdefinierten Taxonomien (Taxonomy). <code data-no-auto-translation=\"\">meta_query<\/code> Dient dazu, Artikel abzurufen, die mit bestimmten benutzerdefinierten Feldern (Post Meta) sowie deren Werten versehen sind. Zum Beispiel kann so nach allen Produkten gesucht werden, die als \u201cauf Lager\u201d oder \u201cau\u00dferhalb der regul\u00e4ren Preisliste\u201d gekennzeichnet sind.<\/p>\n<!-- AUTO_SYNCED_PATTERN_INSERT_START -->\n\r\n<div class=\"flex justify-between items-center flex-col lg:flex-row xl:flex-col 2xl:flex-row gap-6 sm:gap-8 rounded-lg border border-gray-200 dark:border-gray-700 p-4 mb-8 lg:mb-10 sm:p-6 bg-white dark:bg-gray-750 shadow-md transition-colors duration-300\"\r\n     data-link=\"https:\/\/www.likacloud.com\/de\/tolink\/ultahost-wordpress-hosting\/\">\r\n     \r\n  <div class=\"flex flex-col gap-3 gap-4 sm:gap-6 w-full\">\r\n    <strong class=\"text-2xl font-semibold text-gray-900 dark:text-gray-200\">\r\n      UltaHost \u2013 WordPress-Hosting-Anbieter    <\/strong>\r\n    <div class=\"text-gray-600 dark:text-gray-300 word-word\">30-t\u00e4gige Geld-zur\u00fcck-Garantie, unbegrenztes Bandbreiten- und Datenbankvolumen, kostenlose DDoS-Schutzma\u00dfnahmen sowie ein Rabatt von 501 auf 4 Terabyte bei einer Kaufdauer von 3 Jahren.<\/div>\r\n  <\/div>\r\n\r\n  <div class=\"flex items-center flex-col md:flex-row lg:flex-col xl:flex-row 2xl:flex-col gap-6 shrink-0\">\r\n          <a href=\"https:\/\/www.likacloud.com\/de\/tolink\/ultahost-wordpress-hosting\/\">\r\n                  <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/12\/20251227020448.webp\" alt=\"Das LOGO von UltaHost\" class=\"content-promotion-card-icon h-9 min-h-9 dark:hidden\" title=\"\">\r\n          <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/12\/20251229052118.webp\" alt=\"Das LOGO von UltaHost\" class=\"content-promotion-card-icon h-9 min-h-9 hidden dark:block\" title=\"\">\r\n              <\/a>\r\n    \r\n    <a href=\"https:\/\/www.likacloud.com\/de\/tolink\/ultahost-wordpress-hosting\/\"\r\n       class=\"bg-blue-500 w-full md:w-auto lg:w-full xl:w-auto 2xl:w-full text-center !text-white dark:!text-gray-200 !px-5 !py-1.5 rounded-full hover:bg-blue-600 transition-colors\">\r\n       Zugangsseite    <\/a>\r\n  <\/div>\r\n<\/div>\n<!-- AUTO_SYNCED_PATTERN_INSERT_END -->\n\n\n\n\n\n<pre class=\"wp-block-code\" data-no-auto-translation=\"\"><code class=\"language-php\" data-no-auto-translation=\"\">$args = array(\n    &#039;post_type&#039; =&gt; &#039;book&#039;,\n    &#039;tax_query&#039; =&gt; array(\n        array(\n            &#039;taxonomy&#039; =&gt; &#039;genre&#039;, \/\/ \u81ea\u5b9a\u4e49\u5206\u7c7b\u6cd5\uff1a\u4e66\u7c4d\u7c7b\u578b\n            &#039;field&#039;    =&gt; &#039;slug&#039;,\n            &#039;terms&#039;    =&gt; array( &#039;science-fiction&#039;, &#039;fantasy&#039; ),\n            &#039;operator&#039; =&gt; &#039;IN&#039;, \/\/ \u67e5\u8be2\u7c7b\u578b\u4e3a\u201c\u79d1\u5e7b\u201d\u6216\u201c\u5947\u5e7b\u201d\u7684\u4e66\u7c4d\n        ),\n    ),\n    &#039;meta_query&#039; =&gt; array(\n        array(\n            &#039;key&#039;     =&gt; &#039;_price&#039;,\n            &#039;value&#039;   =&gt; 50,\n            &#039;compare&#039; =&gt; &#039;&lt;&#039;,\n            &#039;type&#039;    =&gt; &#039;NUMERIC&#039;, \/\/ \u67e5\u8be2\u4ef7\u683c\u4f4e\u4e8e50\u7684\u4e66\u7c4d\n        ),\n    ),\n);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Erstellen und Ausf\u00fchren einer benutzerdefinierten Abfrage-Schleife<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nachdem die Abfrageparameter definiert wurden, ist der n\u00e4chste Schritt die Instanzierung. <code data-no-auto-translation=\"\">WP_Query<\/code> Die Ergebnisse werden sicher und sequenziell ausgegeben. Dieser Prozess folgt einem standardisierten Muster, dessen Einhaltung f\u00fcr die Stabilit\u00e4t der globalen Variablenumgebung von entscheidender Bedeutung ist.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Standardisierte Struktur f\u00fcr Abfragezyklen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Eine solide, benutzerdefinierte Abfrage-Schleife sollte vier Schritte umfassen: Die Initialisierung des Abfrageobjekts, die \u00dcberpr\u00fcfung, ob es Ergebnisse gibt, die Ausgabe der Inhalte in einer Schleife sowie die Zur\u00fccksetzung der globalen Daten. Innerhalb der Schleife k\u00f6nnen verschiedene Operationen durchgef\u00fchrt werden. <code data-no-auto-translation=\"\">the_post()<\/code> Methoden und eine Reihe von Vorlagetags (z. B.) <code data-no-auto-translation=\"\">the_title()<\/code>, <code data-no-auto-translation=\"\">the_content()<\/code>) um die Informationen zu jedem Artikel auszugeben.<\/p>\n\n\n\n<pre class=\"wp-block-code\" data-no-auto-translation=\"\"><code class=\"language-php\" data-no-auto-translation=\"\">\/\/ 1. \u521d\u59cb\u5316\n$featured_args = array( &#039;category_name&#039; =&amp;gt; &#039;featured&#039;, &#039;posts_per_page&#039; =&amp;gt; 3 );\n$featured_query = new WP_Query( $featured_args );\n\n\/\/ 2. \u68c0\u67e5\nif ( $featured_query-&amp;gt;have_posts() ) {\n    echo &#039;&lt;section class=&quot;featured-posts&quot;&gt;&#039;;\n    \/\/ 3. \u5faa\u73af\n    while ( $featured_query-&amp;gt;have_posts() ) {\n        $featured_query-&amp;gt;the_post();\n        \/\/ \u73b0\u5728\u53ef\u4ee5\u4f7f\u7528\u6a21\u677f\u6807\u7b7e\n        echo &#039;&lt;article&gt;&#039;echo &#039;&lt;h2&gt;&lt;a href=&quot;\/de\/&#039; . esc_url( get_permalink() ) . &#039;\/&quot;&gt;&#039;. get_the_title() . &#039;&lt;\/a&gt;&lt;\/h2&gt;&#039;;\n        the_excerpt();\n        echo &#039;&lt;\/article&gt;&#039;;\n    }\n    echo &#039;&lt;\/section&gt;&#039;;\n} else {\n    \/\/ \u5982\u679c\u6ca1\u6709\u627e\u5230\u6587\u7ae0\n    echo &#039;&lt;p&gt;Es gibt derzeit keine ausgew&auml;hlten Inhalte.&lt;\/p&gt;&#039;\/\/ 3. Ausgabe der Ergebnisse  \necho &#039;&lt;p&gt;Die Ergebnisse sind: &lt;\/p&gt;&lt;ul&gt;&lt;li&gt;&#039;. implode(&#039;,&#039;, $result). &#039;&lt;\/li&gt;&lt;\/ul&gt;&#039;;  \n\n\/\/ 4. Zur&uuml;cksetzen (ein wichtiger Schritt!)  \nwp_reset_postdata();<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Verarbeitung der Metadaten in den Ergebnissen der Abfrage<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code data-no-auto-translation=\"\">WP_Query<\/code> Die Objekte liefern nicht nur die Daten der Artikel, sondern enthalten auch Metainformationen \u00fcber die eigentliche Abfrage, die bei der Entwicklung sehr n\u00fctzlich sind. Zum Beispiel\u2026<code data-no-auto-translation=\"\">$query-&gt;max_num_pages<\/code> Die Eigenschaft erm\u00f6glicht es, die Gesamtanzahl der Seiten der Abfrageergebnisse zu ermitteln, was zur Erstellung einer benutzerdefinierten Paginierungsnavigation verwendet werden kann.<code data-no-auto-translation=\"\">$query-&gt;found_posts<\/code> Die Eigenschaft gibt die Gesamtanzahl aller Artikel zur\u00fcck, die den angegebenen Kriterien entsprechen \u2013 nicht nur die Anzahl der Artikel auf der aktuellen Seite.<\/p>\n\n\n\n<pre class=\"wp-block-code\" data-no-auto-translation=\"\"><code class=\"language-php\" data-no-auto-translation=\"\">\/\/ \u5728\u5faa\u73af\u4e4b\u540e\uff0c\u53ef\u4ee5\u83b7\u53d6\u8fd9\u4e9b\u4fe1\u606f\n$total_posts = $featured_query-&amp;gt;found_posts;\n$total_pages = $featured_query-&amp;gt;max_num_pages;\n\necho &quot;&lt;p&gt;Insgesamt wurden {$total_posts} ausgew&auml;hlte Artikel gefunden, die auf {$total_pages} Seiten verteilt sind.&lt;\/p&gt;&quot;Basierend auf diesen Informationen k&ouml;nnen Sie benutzerdefinierte Paginierungslinks erstellen.<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Optimierung der Abfrageleistung und der Caching-Strategie<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Mit dem Wachstum des Website-Inhalts und der zunehmenden Komplexit\u00e4t der Abfragen wird die Leistung zu einem nicht zu vernachl\u00e4ssigenden Problem. Unangemessene\u2026 <code data-no-auto-translation=\"\">WP_Query<\/code> Dies kann zu einer \u00fcberm\u00e4\u00dfigen Belastung der Datenbank f\u00fchren und die Ladezeit der Seiten verlangsamen.<\/p>\n<!-- AUTO_INTERNAL_LINKS_START --><p>Empfohlene Lekt\u00fcre <a href=\"https:\/\/www.likacloud.com\/es\/knowledge\/wordpress\/professional-wordpress-theme-development-responsive-website\/\">Eine detaillierte Analyse der professionellen WordPress-Themenentwicklung: Aufbau einer responsiven Website von Grund auf<\/a>\u3002<\/p><!-- AUTO_INTERNAL_LINKS_END -->\n\n\n\n\n<h3 class=\"wp-block-heading\">Die Verwendung der Transients-API zur Caching von Abfrageergebnissen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr Abfragen, deren Ausgabe nicht h\u00e4ufig \u00e4ndert (z. B. \u201cDie beliebtesten Artikel des Monats\u201d oder \u201cEmpfohlene Artikel durch die Redaktion\u201d), ist die Verwendung der Transients-API von WordPress eine hervorragende Wahl. Diese API erm\u00f6glicht es, die Abfrageergebnisse oder direkt generierte HTML-Abschnitte tempor\u00e4r im Datenbank- oder Speicher-Cache zu speichern und innerhalb der G\u00fcltigkeitsdauer direkt abzurufen, wodurch die wiederholte Ausf\u00fchrung aufwendiger Datenbankabfragen vermieden wird.<\/p>\n\n\n\n<pre class=\"wp-block-code\" data-no-auto-translation=\"\"><code class=\"language-php\" data-no-auto-translation=\"\">\/\/ \u5b9a\u4e49\u4e00\u4e2a\u552f\u4e00\u7684\u77ac\u6001\u952e\u540d\n$transient_key = &#039;mytheme_hot_products_week_42&#039;;\n\n\/\/ \u5c1d\u8bd5\u4ece\u7f13\u5b58\u4e2d\u83b7\u53d6\n$cached_html = get_transient( $transient_key );\n\nif ( false === $cached_html ) {\n    \/\/ \u7f13\u5b58\u4e0d\u5b58\u5728\u6216\u5df2\u8fc7\u671f\uff0c\u6267\u884c\u67e5\u8be2\n    $args = array(\n        &#039;post_type&#039;      =&gt; &#039;product&#039;,\n        &#039;meta_key&#039;       =&gt; &#039;sales_count&#039;,\n        &#039;orderby&#039;        =&gt; &#039;meta_value_num&#039;,\n        &#039;order&#039;          =&gt; &#039;DESC&#039;,\n        &#039;posts_per_page&#039; =&gt; 5,\n    );\n    $hot_query = new WP_Query( $args );\n\nob_start(); \/\/ \u5f00\u542f\u8f93\u51fa\u7f13\u51b2\n    \/\/ ... \u5faa\u73af\u8f93\u51fa\u6587\u7ae0HTML\u5230\u7f13\u51b2\u533a\n    if ( $hot_query-&gt;have_posts() ) {\n        while ( $hot_query-&gt;have_posts() ) { $hot_query-&gt;the_post();\n            \/\/ \u8f93\u51fa\u5217\u8868\u9879\n        }\n    }\n    wp_reset_postdata();\n    $cached_html = ob_get_clean(); \/\/ \u83b7\u53d6\u7f13\u51b2\u5185\u5bb9\u5e76\u6e05\u7a7a\n\n\/\/ \u5c06\u7ed3\u679c\u7f13\u5b5812\u5c0f\u65f6\n    set_transient( $transient_key, $cached_html, 12 * HOUR_IN_SECONDS );\n}\n\n\/\/ \u8f93\u51fa\u7f13\u5b58\u6216\u521a\u751f\u6210\u7684\u5185\u5bb9\necho $cached_html;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Verwenden Sie \u2018posts_per_page\u2019 und \u2018offset\u2019 mit Vorsicht.\u2019<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Manchmal m\u00f6chten Entwickler die ersten N Artikel auslassen (z. B. bei der Anzeige von \u201cMehr Nachrichten\u201d in der Seitenleiste, um die Titelartikel zu \u00fcberspringen). Dies l\u00e4sst sich direkt umsetzen. <code data-no-auto-translation=\"\">offset<\/code> Die Parameter werden zusammen mit der Pagierung verwendet.<code data-no-auto-translation=\"\">paged<\/code>Dadurch entstehen Konflikte, die zu Fehlern bei der Berechnung der Seitenzahlen f\u00fchren. Es wird daher dringender empfohlen, dies direkt innerhalb der Schleife zu erledigen. <code data-no-auto-translation=\"\">$query-&gt;current_post<\/code> Man kann Bedingungen an Attributen pr\u00fcfen oder diese bei der \u00c4nderung der Hauptabfrage verwenden. <code data-no-auto-translation=\"\">pre_get_posts<\/code> Die Verkn\u00fcpfung (\u201eHook\u201c) erm\u00f6glicht die Durchf\u00fchrung komplexerer logischer Verarbeitungen \u2013 anstatt lediglich die Verwendung von Verschiebungen (\u201eOffset\u201c).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die Hauptabfrage wird durch das Hinzuf\u00fcgen von \u201eHook-Elementen\u201c modifiziert.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In vielen F\u00e4llen m\u00f6chten Sie nicht eine v\u00f6llig neue, unabh\u00e4ngige Schleife erstellen, sondern die von WordPress f\u00fcr die aktuelle Seite automatisch generierte Hauptabfrage modifizieren. Zum Beispiel m\u00f6chten Sie, dass auf der Archivseite einer Kategorie sowohl Standardartikel als auch eine benutzerdefinierte Artikelart angezeigt werden. Die direkte Erstellung einer Hilfsschleife und das Ersetzen der gesamten Hauptabfrage ist sowohl ineffizient als auch aufwendig. In solchen F\u00e4llen sollten Sie\u2026 <code data-no-auto-translation=\"\">pre_get_posts<\/code> Aktionshookups.<\/p>\n<!-- AUTO_SYNCED_PATTERN_INSERT_START -->\n\r\n<div class=\"flex justify-between items-center flex-col lg:flex-row xl:flex-col 2xl:flex-row gap-6 sm:gap-8 rounded-lg border border-gray-200 dark:border-gray-700 p-4 mb-8 lg:mb-10 sm:p-6 bg-white dark:bg-gray-750 shadow-md transition-colors duration-300\"\r\n     data-link=\"https:\/\/www.likacloud.com\/de\/tolink\/hosting-shared-hosting\/\">\r\n     \r\n  <div class=\"flex flex-col gap-3 gap-4 sm:gap-6 w-full\">\r\n    <strong class=\"text-2xl font-semibold text-gray-900 dark:text-gray-200\">\r\n      hosting.com Shared Hosting    <\/strong>\r\n    <div class=\"text-gray-600 dark:text-gray-300 word-word\">Hohe Leistung mit AMD EPYC-CPUs, NVMe-SSD-Speicher und LiteSpeed, fachkundiger Inhouse-Support rund um die Uhr, erweiterte Sicherheitsma\u00dfnahmen einschlie\u00dflich SSL, Brute-Force-, Malware- und DDoS-Schutz, Einsparungen von bis zu 73%<\/div>\r\n  <\/div>\r\n\r\n  <div class=\"flex items-center flex-col md:flex-row lg:flex-col xl:flex-row 2xl:flex-col gap-6 shrink-0\">\r\n          <a href=\"https:\/\/www.likacloud.com\/de\/tolink\/hosting-shared-hosting\/\">\r\n                  <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/09\/20250901222940.svg\" alt=\"Das LOGO von hosting.com\" class=\"content-promotion-card-icon h-9 min-h-9 dark:hidden\" title=\"\">\r\n          <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/12\/20251228220957.webp\" alt=\"Das LOGO von hosting.com\" class=\"content-promotion-card-icon h-9 min-h-9 hidden dark:block\" title=\"\">\r\n              <\/a>\r\n    \r\n    <a href=\"https:\/\/www.likacloud.com\/de\/tolink\/hosting-shared-hosting\/\"\r\n       class=\"bg-blue-500 w-full md:w-auto lg:w-full xl:w-auto 2xl:w-full text-center !text-white dark:!text-gray-200 !px-5 !py-1.5 rounded-full hover:bg-blue-600 transition-colors\">\r\n       Zugangsseite    <\/a>\r\n  <\/div>\r\n<\/div>\n<!-- AUTO_SYNCED_PATTERN_INSERT_END -->\n\n\n\n\n\n<h3 class=\"wp-block-heading\">In functions.php die Funktion `pre_get_posts` verwenden<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Legen Sie die ge\u00e4nderte Logik in das Thema. <code data-no-auto-translation=\"\">functions.php<\/code> In der Datei kann das Verhalten der Hauptabfrage auf elegante und effiziente Weise ge\u00e4ndert werden. Der Schl\u00fcssel dazu ist die Nutzung von Bedingungstagschenken (wie\u2026) <code data-no-auto-translation=\"\">is_category()<\/code>, <code data-no-auto-translation=\"\">is_tag()<\/code>) und \u00dcberpr\u00fcfung <code data-no-auto-translation=\"\">$query-&gt;is_main_query()<\/code> Damit sichergestellt wird, dass die \u00c4nderungen nur im richtigen Kontext vorgenommen werden und die Benutzeroberfl\u00e4che f\u00fcr die Backend-Verwaltung oder andere Abfragen nicht beeintr\u00e4chtigt werden.<\/p>\n\n\n\n<pre class=\"wp-block-code\" data-no-auto-translation=\"\"><code class=\"language-php\" data-no-auto-translation=\"\">add_action( &#039;pre_get_posts&#039;, &#039;mytheme_adjust_main_query&#039; );\nfunction mytheme_adjust_main_query( $query ) {\n    \/\/ \u4ec5\u5728\u524d\u7aef\u3001\u4e14\u662f\u4e3b\u67e5\u8be2\u3001\u4e14\u662f\u201c\u65b0\u95fb\u201d\u5206\u7c7b\u9875\u65f6\u6267\u884c\n    if ( ! is_admin() &amp;&amp; $query-&gt;is_main_query() &amp;&amp; is_category( &#039;news&#039; ) ) {\n        \/\/ \u8ba9\u4e3b\u67e5\u8be2\u540c\u65f6\u83b7\u53d6\u201cpost\u201d\u548c\u201cpress-release\u201d\u4e24\u79cd\u6587\u7ae0\u7c7b\u578b\n        $query-&gt;set( &#039;post_type&#039;, array( &#039;post&#039;, &#039;press-release&#039; ) );\n        \/\/ \u6309\u81ea\u5b9a\u4e49\u7684\u201c\u91cd\u8981\u6027\u201d\u5143\u5b57\u6bb5\u6392\u5e8f\n        $query-&gt;set( &#039;meta_key&#039;, &#039;importance_rating&#039; );\n        $query-&gt;set( &#039;orderby&#039;, &#039;meta_value_num&#039; );\n        $query-&gt;set( &#039;order&#039;, &#039;DESC&#039; );\n    }\n\n\/\/ \u5728\u641c\u7d22\u9875\uff0c\u5c06\u641c\u7d22\u8303\u56f4\u6269\u5c55\u5230\u201c\u4ea7\u54c1\u201d\u81ea\u5b9a\u4e49\u6587\u7ae0\u7c7b\u578b\n    if ( ! is_admin() &amp;&amp; $query-&gt;is_main_query() &amp;&amp; $query-&gt;is_search() ) {\n        $current_types = $query-&gt;get( &#039;post_type&#039; );\n        if ( empty( $current_types ) ) {\n            \/\/ \u9ed8\u8ba4\u641c\u7d22\u53ea\u5305\u542b\u2018post\u2019\uff0c\u6211\u4eec\u52a0\u5165\u2018product\u2019\n            $query-&gt;set( &#039;post_type&#039;, array( &#039;post&#039;, &#039;page&#039;, &#039;product&#039; ) );\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Zusammenfassungen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code data-no-auto-translation=\"\">WP_Query<\/code> Es ist der Schl\u00fcssel, um das Potenzial der WordPress-Theme-Struktur zur Darstellung von Inhalten voll auszusch\u00f6pfen. Von einfachen Artikellisten \u00fcber komplexe Aggregationsseiten, die auf mehreren Kategorien, Metadaten, Datumsangaben usw. basieren, bietet es eine unvergleichliche Flexibilit\u00e4t und Kontrolle. Es ist wichtig, das Parameter-System zu verstehen, dem Standardmuster \u201cInitialisierung \u2013 \u00dcberpr\u00fcfung \u2013 Wiederholung \u2013 Zur\u00fccksetzung\u201d zu folgen und die Funktionen des Themes geschickt einzusetzen. <code data-no-auto-translation=\"\">pre_get_posts<\/code> Die Optimierung der Hauptabfrage sowie die Nutzung von Caching-Strategien zur Gew\u00e4hrleistung der Leistung sind essentielle F\u00e4higkeiten f\u00fcr jeden erfahrenen Themaentwickler. Durch praktische Erfahrungen werden Sie in der Lage sein, dynamische Inhaltsanzeigen zu erstellen, die auf verschiedene Gesch\u00e4ftsanforderungen reagieren, effizient sind und leicht zu warten sind.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ H\u00e4ufig gestellte Fragen<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Wenn die Ergebnisse der WP_Query-Anfrage leer sind, wie kann man das debuggen?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Zun\u00e4chst sollten Sie \u00fcberpr\u00fcfen, ob die Schreibweise und die Werte des Parameterarrays korrekt sind \u2013 insbesondere die Namen der Klassifikationssysteme sowie die Identifikatoren der Artikeltypen. Anschlie\u00dfend k\u00f6nnen Sie diese Informationen nutzen\u2026 <code data-no-auto-translation=\"\">print_r( $query-&gt;request );<\/code> Nach der Initialisierung des Query-Objekts soll der tats\u00e4chlich ausgef\u00fchrte SQL-Befehl ausgegeben werden \u2013 dies gibt direkt Aufschluss \u00fcber die Abfragebedingungen. Stellen Sie schlie\u00dflich sicher, dass das gesuchte Objekt tats\u00e4chlich existiert und in dem Zustand \u201cVer\u00f6ffentlicht\u201d (\u201ePublished\u201c) ist.<code data-no-auto-translation=\"\">publish<\/code>Standardm\u00e4\u00dfig\u2026 <code data-no-auto-translation=\"\">WP_Query<\/code> Es ist nicht m\u00f6glich, Entw\u00fcrfe oder automatisch geplante Artikel abzurufen.<\/p>\n<!-- AUTO_INTERNAL_LINKS_START --><p>Empfohlene Lekt\u00fcre <a href=\"https:\/\/www.likacloud.com\/es\/knowledge\/wordpress\/wordpress-theme-development-custom-theme-guide-2026\/\">WordPress-Themenentwicklung: Eine vollst\u00e4ndige Anleitung zur Erstellung eines benutzerdefinierten Themas von Grund auf.<\/a>\u3002<\/p><!-- AUTO_INTERNAL_LINKS_END -->\n\n\n\n\n<h3 class=\"wp-block-heading\">Welches sollte man verwenden \u2013 WP_Query oder get_posts?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code data-no-auto-translation=\"\">get_posts<\/code> Verwendung innerhalb einer Funktion <code data-no-auto-translation=\"\">WP_Query<\/code>Aber es gibt standardm\u00e4\u00dfig eine Array von Artikelobjekten zur\u00fcck und \u00e4ndert keine globalen Variablen (z. B. <code data-no-auto-translation=\"\">$post<\/code>Daher ist es in der Regel nicht notwendig, eine solche Funktion aufzurufen. <code data-no-auto-translation=\"\">wp_reset_postdata()<\/code>Es ist leichter und eignet sich f\u00fcr einfache Datenerfassungsvorg\u00e4nge \u2013 zum Beispiel f\u00fcr die Erstellung einer Liste von Links.<code data-no-auto-translation=\"\">WP_Query<\/code> Objekte sind weitaus funktionaler. Sie verwalten Metainformationen wie die Seitenzahl und die Gesamtzahl. Ihre Schleifen k\u00f6nnen globale Variablen korrekt einstellen, um dies zu unterst\u00fctzen. <code data-no-auto-translation=\"\">the_title()<\/code> Vorlagen-Tags sind die bevorzugte Wahl zur Erstellung von wiederholten Inhalten in Themenvorlagen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wie kann man Artikel eines bestimmten Autors oder aus einem bestimmten Datum heraus suchen?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Verwendbar <code data-no-auto-translation=\"\">author<\/code> Parameter (akzeptieren Autor-ID, Benutzername oder Benutzer-Nickname) und <code data-no-auto-translation=\"\">date_query<\/code> Parameter.<code data-no-auto-translation=\"\">date_query<\/code> Sehr leistungsf\u00e4hig \u2013 es erm\u00f6glicht die Abfrage nach einem bestimmten Jahr\/Monat\/Tag, einem Zeitraum, sowie relativen Datumsangaben (z. B. \u201cdie letzten 30 Tage\u201d).<\/p>\n<!-- AUTO_SYNCED_PATTERN_INSERT_START -->\n\r\n<div class=\"flex justify-between items-center flex-col lg:flex-row xl:flex-col 2xl:flex-row gap-6 sm:gap-8 rounded-lg border border-gray-200 dark:border-gray-700 p-4 mb-8 lg:mb-10 sm:p-6 bg-white dark:bg-gray-750 shadow-md transition-colors duration-300\"\r\n     data-link=\"https:\/\/www.likacloud.com\/de\/tolink\/interserver-webhosting\/\">\r\n     \r\n  <div class=\"flex flex-col gap-3 gap-4 sm:gap-6 w-full\">\r\n    <strong class=\"text-2xl font-semibold text-gray-900 dark:text-gray-200\">\r\n      InterServer Shared Hosting    <\/strong>\r\n    <div class=\"text-gray-600 dark:text-gray-300 word-word\">Shared Hosting $2.50 USD pro Monat, erster Monat $0.1 USD Promo-Code tryinterserver, 461 Cloud-Apps Skripte, ein Klick installieren.<\/div>\r\n  <\/div>\r\n\r\n  <div class=\"flex items-center flex-col md:flex-row lg:flex-col xl:flex-row 2xl:flex-col gap-6 shrink-0\">\r\n          <a href=\"https:\/\/www.likacloud.com\/de\/tolink\/interserver-webhosting\/\">\r\n                  <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/12\/20251228045033.svg\" alt=\"Das LOGO von InterServer\" class=\"content-promotion-card-icon h-9 min-h-9 dark:hidden\" title=\"\">\r\n          <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/12\/20251229054830.webp\" alt=\"Das LOGO von InterServer\" class=\"content-promotion-card-icon h-9 min-h-9 hidden dark:block\" title=\"\">\r\n              <\/a>\r\n    \r\n    <a href=\"https:\/\/www.likacloud.com\/de\/tolink\/interserver-webhosting\/\"\r\n       class=\"bg-blue-500 w-full md:w-auto lg:w-full xl:w-auto 2xl:w-full text-center !text-white dark:!text-gray-200 !px-5 !py-1.5 rounded-full hover:bg-blue-600 transition-colors\">\r\n       Zugangsseite    <\/a>\r\n  <\/div>\r\n<\/div>\n<!-- AUTO_SYNCED_PATTERN_INSERT_END -->\n\n\n\n\n\n<pre class=\"wp-block-code\" data-no-auto-translation=\"\"><code class=\"language-php\" data-no-auto-translation=\"\">$args = array(\n    &#039;author&#039; =&gt; 5, \/\/ \u67e5\u8be2ID\u4e3a5\u7684\u4f5c\u8005\u7684\u6587\u7ae0\n    &#039;date_query&#039; =&gt; array(\n        array(\n            &#039;after&#039; =&gt; &#039;2026-01-01&#039;, \/\/ 2026\u5e741\u67081\u65e5\u4e4b\u540e\n            &#039;before&#039; =&gt; &#039;2026-12-31&#039;, \/\/ 2026\u5e7412\u670831\u65e5\u4e4b\u524d\n            &#039;inclusive&#039; =&gt; true, \/\/ \u5305\u542b\u8d77\u6b62\u65e5\u671f\n        ),\n    ),\n);<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Warum muss wp_reset_postdata() unbedingt aufgerufen werden?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u201eIn\u201c <code data-no-auto-translation=\"\">WP_Query<\/code> W\u00e4hrend der Schleife\u2026<code data-no-auto-translation=\"\">the_post()<\/code> Die Methode setzt einen globalen Wert. <code data-no-auto-translation=\"\">$post<\/code> Variablen: Wenn sie nicht zur\u00fcckgesetzt werden, k\u00f6nnte der folgende Code (z. B. andere Teile der Hauptschleife, Seitenleisten-Widgets oder bestimmte Funktionen von Plugins) diese ver\u00e4nderte Variable f\u00e4lschlicherweise verwenden. <code data-no-auto-translation=\"\">$post<\/code> Objekte k\u00f6nnen zu fehlerhaften Anzeigen oder unerwarteten Verhaltensweisen f\u00fchren.<code data-no-auto-translation=\"\">wp_reset_postdata()<\/code> Die Funktion besteht darin, \u2026 (The function is to \u2026) <code data-no-auto-translation=\"\">$post<\/code> Die Wiederherstellung des aktuellen Artikels in der Hauptabfrage gew\u00e4hrleistet die Konsistenz der globalen Umgebung. Dies ist eine \u00e4u\u00dferst wichtige Sicherheitsma\u00dfnahme.<\/p>","protected":false},"excerpt":{"rendered":"<p>Der Artikel geht ausf\u00fchrlich auf die Klasse WP_Query im WordPress-Entwicklungsumfeld ein. WP_Query ist ein entscheidendes Werkzeug, das es erm\u00f6glicht, die Standard-Hauptschleife zu \u00fcberschreiten und eine pr\u00e4zise Kontrolle \u00fcber das Inhaltsangebot zu erlangen. Es werden die Kernparameter von WP_Query detailliert erkl\u00e4rt, einschlie\u00dflich der Grundabfragen, der Paginierung sowie der Verwendung von tax_query und meta_query f\u00fcr komplexe Filterung. Zudem werden standardisierte Methoden zur Erstellung benutzerdefinierter Abfrageschleifen vorgestellt, was diesen Artikel zu einer praktischen Anleitung f\u00fcr die Entwicklung fortgeschrittener Theme-Funktionen macht.<\/p>","protected":false},"author":7,"featured_media":0,"template":"","meta":{"_acf_changed":false,"footnotes":""},"tags":[806,3369,804,2811,3370],"knowledge_category":[280],"class_list":["post-12380145","knowledge_post","type-knowledge_post","status-publish","hentry","tag-wordpress-development","tag-wp-query","tag-theme-development","tag-content-loop","tag-database-queries","knowledge_category-wordpress"],"acf":{"site_seo_keywords":"WP_Query, WordPress \u4e3b\u9898\u5f00\u53d1, \u5185\u5bb9\u5faa\u73af, \u81ea\u5b9a\u4e49\u67e5\u8be2, \u5206\u7c7b\u6cd5\u67e5\u8be2, \u5143\u6570\u636e\u67e5\u8be2, \u7cbe\u51c6\u63a7\u5236\u6587\u7ae0\u8f93\u51fa, WordPress \u9ad8\u7ea7\u529f\u80fd"},"_links":{"self":[{"href":"https:\/\/www.likacloud.com\/de\/wp-json\/wp\/v2\/knowledge_posts\/12380145","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.likacloud.com\/de\/wp-json\/wp\/v2\/knowledge_posts"}],"about":[{"href":"https:\/\/www.likacloud.com\/de\/wp-json\/wp\/v2\/types\/knowledge_post"}],"author":[{"embeddable":true,"href":"https:\/\/www.likacloud.com\/de\/wp-json\/wp\/v2\/users\/7"}],"version-history":[{"count":1,"href":"https:\/\/www.likacloud.com\/de\/wp-json\/wp\/v2\/knowledge_posts\/12380145\/revisions"}],"predecessor-version":[{"id":12406424,"href":"https:\/\/www.likacloud.com\/de\/wp-json\/wp\/v2\/knowledge_posts\/12380145\/revisions\/12406424"}],"wp:attachment":[{"href":"https:\/\/www.likacloud.com\/de\/wp-json\/wp\/v2\/media?parent=12380145"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.likacloud.com\/de\/wp-json\/wp\/v2\/tags?post=12380145"},{"taxonomy":"knowledge_category","embeddable":true,"href":"https:\/\/www.likacloud.com\/de\/wp-json\/wp\/v2\/knowledge_category?post=12380145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}