Sie wissen, wann Sie einen WordPress-Beitrag nur anzeigen müssen, wenn er ein bestimmtes benutzerdefiniertes Feld hat? Wir kennen das.
Als wir mit WordPress anfingen, wirkte jeder Code-Schnipsel einschüchternd, besonders wenn wir nur Beiträge mit spezifischen Informationen anzeigen wollten.
Aber hier sind die guten Nachrichten: Nachdem wir Tausenden von WordPress-Anfängern geholfen haben, haben wir festgestellt, dass selbst etwas, das technisch klingt, wie das Filtern benutzerdefinierter Felder, nicht beängstigend sein muss.
Tatsächlich führen wir Sie durch eine einfache Code-Methode, um dies zu tun.
Diese Lösung funktioniert perfekt, egal ob Sie reguläre Blogbeiträge oder benutzerdefinierte Beitragstypen basierend auf bestimmten Kriterien veröffentlichen.

💡 TL;DR: Sie können nur WordPress-Beiträge anzeigen, die ein bestimmtes benutzerdefiniertes Feld haben, indem Sie eine benutzerdefinierte WP_Query in Ihren Theme-Dateien (wie index.php) verwenden, um diese Beiträge zu filtern.
📌 Schneller Hinweis: Dieses Tutorial dient dazu, WordPress-Beiträge anzuzeigen, wenn für sie ein Wert in einem bestimmten benutzerdefinierten Feld eingegeben wurde. Wenn Sie benutzerdefinierte Felder auf der Frontend-Seite eines WordPress-Beitrags anzeigen möchten, lesen Sie unseren Leitfaden zur Anzeige benutzerdefinierter Felder in WordPress-Themes.
Warum WordPress-Beiträge mit einem bestimmten benutzerdefinierten Feld anzeigen?
Wenn Sie einen Beitrag auf Ihrer WordPress-Website erstellen, können Sie mit benutzerdefinierten Feldern zusätzliche Metadaten zum Beitrag hinzufügen.
Metadaten sind zusätzliche Informationen, die Sie einem Beitrag hinzufügen können. Wenn Sie beispielsweise eine Buchrezension schreiben, könnten Sie benutzerdefinierte Felder für „Name des Autors“ oder „Sternebewertung“ hinzufügen.
Benutzerdefinierte Felder sind ein fortgeschrittenes WordPress-Konzept, und es gibt viele Möglichkeiten, benutzerdefinierte Felder in WordPress hinzuzufügen. In unserem Beitrag WordPress Custom Fields 101: Tipps, Tricks und Hacks finden Sie viele hilfreiche Tipps zur Verwendung und Anzeige benutzerdefinierter Felder.

Einer unserer Benutzer fragte uns, wie man WordPress-Beiträge nur dann anzeigt, wenn ein bestimmtes benutzerdefiniertes Feld vorhanden ist. Dies kann nützlich sein, wenn Sie eine benutzerdefinierte Seite erstellen möchten, die alle Beiträge auflistet, die ein bestimmtes benutzerdefiniertes Feld und/oder einen bestimmten Wert enthalten.
Nachdem wir die Antwort gegeben hatten, dachten wir, es wäre am besten, sie mit allen zu teilen, damit die größere WordPress.org-Community davon profitieren kann.
Bearbeiten Ihrer WordPress-Theme-Dateien: Was Sie beachten sollten
Bevor Sie beginnen, gibt es ein paar wichtige Dinge, die Sie bei der Arbeit mit Theme-Dateien beachten sollten.
Wenn Sie Code direkt zu Ihren Theme-Dateien hinzufügen, gehen Ihre Änderungen verloren, wenn Sie Ihr Theme das nächste Mal aktualisieren.
Deshalb empfehlen wir die Verwendung eines Plugins wie WPCode, um benutzerdefinierten PHP-Code sicher hinzuzufügen, ohne Ihr Theme zu bearbeiten. Wenn Sie lieber Theme-Dateien bearbeiten, stellen Sie sicher, dass Sie ein Child-Theme verwenden, damit Ihre Änderungen erhalten bleiben.
Um dieses Tutorial richtig befolgen zu können, sollten Sie Folgendes beachten:
- Dieses Tutorial beinhaltet das Hinzufügen von Code zu Ihrer WordPress-Website, daher ist es nicht am besten für absolute Anfänger geeignet. Wenn Sie neu hier sind, müssen Sie unseren Leitfaden zum Kopieren und Einfügen von Code in WordPress lesen.
- Wir empfehlen, eine Sicherung Ihrer Website zu erstellen und/oder eine Staging-Umgebung zu verwenden, damit Ihre Live-Site bei einem Fehler nicht beeinträchtigt wird. Dies liegt daran, dass Sie Code zu Ihren Theme-Dateien hinzufügen, was riskant sein kann.
- Wir empfehlen, zu verstehen, wie die WordPress-Template-Hierarchie funktioniert, damit Sie wissen, wo Sie den Code später hinzufügen müssen.
- Sie müssen sich auch damit vertraut machen, wie WordPress-Schleifen funktionieren, da wir diese Parameter in einer WordPress-Abfrage aufrufen werden.
📍Wichtiger Hinweis: Dieses Tutorial funktioniert nur mit klassischen WordPress-Themes. Block-Themes verwenden den Site-Editor und einen anderen Ansatz zur Anzeige von Inhalten, sodass diese Methode der Bearbeitung von Vorlagendateien nicht anwendbar ist.
Mit diesen Worten wollen wir uns ansehen, wie ein WordPress-Beitrag nur dann angezeigt wird, wenn er ein bestimmtes benutzerdefiniertes Feld hat.
- Schritt 1: Installieren Sie ein Code-Snippet-Plugin
- Schritt 2: Fügen Sie den benutzerdefinierten Abfragecode hinzu
- Schritt 3: Filtern nach spezifischem Meta-Wert (optional)
- Schritt 4: Filtern nach Meta-Vergleich (optional)
- Schritt 5: Beiträge nach mehreren benutzerdefinierten Feldern filtern (meta_query)
- Praxisbeispiel: Nur 5-Sterne-Bewertungen anzeigen
- Häufig gestellte Fragen zur Anzeige eines Beitrags, wenn er ein bestimmtes benutzerdefiniertes Feld hat
- Häufig gestellte Fragen zur Anzeige eines Beitrags, wenn er ein bestimmtes benutzerdefiniertes Feld hat
- Erfahren Sie mehr Möglichkeiten, Ihre WordPress-Website anzupassen
Schritt 1: Installieren Sie ein Code-Snippet-Plugin
Einige Tutorials werden Ihnen sagen, dass Sie die index.php-Datei Ihres Themes öffnen und die WordPress-Schleife mit etwas namens WP_Query komplett neu schreiben sollen. Wir raten davon ab.
Das Modifizieren der Hauptvorlagendateien kann das Layout Ihrer Website beschädigen, doppelte Datenbankabfragen verursachen, die Ihre Website verlangsamen, und Ihre Paginierung (die „Nächste Seite“-Schaltflächen) komplett zerstören.
Stattdessen ist der sicherste und effizienteste Weg, dies zu tun, die Verwendung des pre_get_posts Action Hooks. Dies weist WordPress an, die Beiträge zu filtern, bevor die Seiten-Vorlage überhaupt geladen wird.
Um diesen benutzerdefinierten Code hinzuzufügen, empfehlen wir die Verwendung eines Plugins wie WPCode. Es ermöglicht Ihnen, PHP-Code sicher hinzuzufügen, ohne direkt die Dateien Ihres Themes anzufassen. Das bedeutet, dass Ihre Website nicht abstürzt, wenn Sie einen Fehler machen, und Ihre Änderungen nicht verloren gehen, wenn Ihr Theme aktualisiert wird.
Schritt 2: Fügen Sie den benutzerdefinierten Abfragecode hinzu
Nachdem Sie WPCode installiert und aktiviert haben, navigieren Sie in Ihrem WordPress-Dashboard zu Code Snippets » Snippet hinzufügen und wählen Sie „Eigene Codes hinzufügen (Neues Snippet)“.

Stellen Sie sicher, dass der „Code-Typ“ auf PHP-Snippet eingestellt ist.
Fügen Sie dann den folgenden Code ein:
<?php
add_action( 'pre_get_posts', 'wpb_filter_posts_by_custom_field' );
function wpb_filter_posts_by_custom_field( $query ) {
// Only modify the main query on the front-end homepage
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
// Tell WordPress to only get posts with the custom field key 'color'
$query->set( 'meta_key', 'color' );
}
}
Zuerst prüft der Code, ob er nur die Hauptabfrage auf der Startseite Ihrer Website (insbesondere der Blog-Homepage) verändert und Ihr WordPress-Admin-Dashboard unberührt lässt.
Dann wird $query->set verwendet, um WordPress mitzuteilen, dass nur Beiträge abgerufen werden sollen, die das benutzerdefinierte Feld „color“ enthalten.
Da dieser Code die Abfrage vor dem Laden der Seite modifiziert, funktioniert die Standard-Paginierung Ihres Themes perfekt ohne zusätzlichen Code! Schalten Sie einfach den WPCode-Schalter auf Aktiv und klicken Sie auf die Schaltfläche „Snippet speichern“, um es live zu schalten.
Schritt 3: Filtern nach spezifischem Meta-Wert (optional)
Was ist, wenn Sie Beiträge finden möchten, bei denen das benutzerdefinierte Feld „color“ einen bestimmten Wert hat, z. B. „blue“? Dazu müssen Sie lediglich eine meta_value-Regel zu Ihrem Code hinzufügen.
Ihr aktualisiertes Snippet sieht dann so aus:
<?php
add_action( 'pre_get_posts', 'wpb_filter_posts_by_custom_field_value' );
function wpb_filter_posts_by_custom_field_value( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
$query->set( 'meta_key', 'color' );
$query->set( 'meta_value', 'blue' );
}
}
Schritt 4: Filtern nach Meta-Vergleich (optional)
Sie können Ihre Filterung mit dem Parameter meta_compare noch weiter verfeinern. Damit können Sie Beiträge finden, die nicht mit einem Wert übereinstimmen.
Um beispielsweise alle Beiträge anzuzeigen, bei denen die Farbe nicht „blue“ ist, würde Ihre Abfrage wie folgt aussehen:
<?php
add_action( 'pre_get_posts', 'wpb_filter_posts_by_meta_compare' );
function wpb_filter_posts_by_meta_compare( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
$query->set( 'meta_key', 'color' );
$query->set( 'meta_value', 'blue' );
$query->set( 'meta_compare', '!=' );
}
}
Der != weist WordPress an, alle Beiträge zu finden, bei denen das Feld 'Farbe' vorhanden ist, aber nicht gleich 'blau' ist.
Es gibt viele andere Vergleichsoperatoren, die Sie verwenden können. Diese finden Sie in der offiziellen WordPress-Entwicklerdokumentation.
Schritt 5: Beiträge nach mehreren benutzerdefinierten Feldern filtern (meta_query)
Für komplexere Szenarien, in denen Sie Beiträge basierend auf mehreren benutzerdefinierten Feldern filtern oder Bedingungen kombinieren müssen (wie AND/OR), verwenden Sie das Array meta_query.
Dies ermöglicht es Ihnen, ein Array von Bedingungen zu definieren, die jeweils auf ein anderes benutzerdefiniertes Feld oder einen anderen Wert abzielen.
Um beispielsweise Beiträge mit der Farbe „blue“ und der Größe „large“ anzuzeigen, würde Ihr Code wie folgt aussehen:
<?php
add_action( 'pre_get_posts', 'wpb_filter_posts_by_multiple_fields' );
function wpb_filter_posts_by_multiple_fields( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
$meta_query = array(
'relation' => 'AND', // or 'OR'
array(
'key' => 'color',
'value' => 'blue',
'compare' => '=',
),
array(
'key' => 'size',
'value' => 'large',
'compare' => '=',
),
);
$query->set( 'meta_query', $meta_query );
}
}
Diese Abfrage ruft Beiträge ab, die sowohl das benutzerdefinierte Feld „color“ auf „blue“ als auch das benutzerdefinierte Feld „size“ auf „large“ gesetzt haben.
Sie können den Parameter 'relation' auf „OR“ setzen, um Beiträge zu finden, die mindestens eine der Bedingungen erfüllen.
Praxisbeispiel: Nur 5-Sterne-Bewertungen anzeigen
Nehmen wir an, Sie betreiben eine WordPress-Buchrezensionsseite und verwenden ein benutzerdefiniertes Feld namens star_rating, um Bewertungen zu speichern.
Sie können ganz einfach nur Beiträge mit einer 5-Sterne-Bewertung auf Ihrer Blog-Homepage anzeigen, indem Sie diese Abfrage verwenden:
<?php
add_action( 'pre_get_posts', 'wpb_show_only_five_star_reviews' );
function wpb_show_only_five_star_reviews( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
$query->set( 'meta_key', 'star_rating' );
$query->set( 'meta_value', '5' );
}
}
Dies ist äußerst nützlich, wenn Sie sicherstellen möchten, dass Ihr Hauptfeed nur Ihre am besten bewerteten Inhalte enthält.
Häufig gestellte Fragen zur Anzeige eines Beitrags, wenn er ein bestimmtes benutzerdefiniertes Feld hat
Hier sind einige Fragen, die unsere Leser häufig stellen, wenn es darum geht, einen Beitrag anzuzeigen, wenn er nur ein bestimmtes benutzerdefiniertes Feld hat:
Häufig gestellte Fragen zur Anzeige eines Beitrags, wenn er ein bestimmtes benutzerdefiniertes Feld hat
Hier sind einige Fragen, die unsere Leser häufig stellen, wenn es darum geht, einen Beitrag anzuzeigen, wenn er nur ein bestimmtes benutzerdefiniertes Feld hat:
Gibt es eine Möglichkeit, dies zu tun, ohne Theme-Dateien zu bearbeiten?
Ja! Tatsächlich ist die Methode pre_get_posts, die wir in diesem Tutorial beschreiben, speziell dafür konzipiert, dass Sie Ihre Theme-Dateien nicht bearbeiten müssen. Durch die Verwendung eines Snippet-Plugins wie WPCode können Sie diesen Filter sicher auf Ihre Website anwenden, ohne eine einzige Zeile des Kerncodes Ihres Themes zu berühren.
Kann ich Beiträge nach mehreren benutzerdefinierten Feldern filtern?
Das können Sie. Der Hook pre_get_posts akzeptiert komplexe Argumente. Sie würden ein „meta_query“-Array verwenden, mit dem Sie eine Liste von Bedingungen erstellen können, um mehrere benutzerdefinierte Felder gleichzeitig abzugleichen.
Funktioniert diese Methode mit Block-Themes?
Während der pre_get_posts-Hook technisch gesehen mit Block-Themes interagieren kann, verfügt der native WordPress Query Loop-Block nicht über eine integrierte Benutzeroberfläche für die Filterung benutzerdefinierter Felder. Wenn Sie ein Full Site Editing Block-Theme verwenden, ist der einfachste Ansatz die Verwendung eines Plugins, das die Filterung benutzerdefinierter Felder zum Query Loop-Block hinzufügt, anstatt benutzerdefiniertes PHP zu schreiben.
Was ist der Unterschied zwischen 'meta_key' und 'meta_value'?
Betrachten Sie 'meta_key' als den Namen des Labels, wie 'Farbe' oder 'Status'. Der 'meta_value' sind die tatsächlichen Daten, die in dieses Feld eingegeben werden, wie z. B. 'Blau' oder 'Veröffentlicht'.
Die Verwendung des Schlüssels findet jeden Beitrag, der dieses benutzerdefinierte Feld enthält, während die Verwendung des Werts ihn auf Beiträge mit dieser spezifischen Information filtert.
Erfahren Sie mehr Möglichkeiten, Ihre WordPress-Website anzupassen
Hier sind weitere Möglichkeiten, wie Sie Ihre WordPress-Seiten anpassen können:
- Einzelne Kategorien in WordPress unterschiedlich gestalten
- So fügen Sie eine benutzerdefinierte Scrollleiste in WordPress hinzu
- So fügen Sie benutzerdefinierte Stile zu WordPress-Widgets hinzu
- Wie man jeden WordPress-Beitrag unterschiedlich gestaltet
- So verwenden Sie Shortcodes in Ihren WordPress-Themes
- So heben Sie neue Beiträge für wiederkehrende Besucher in WordPress hervor
- So ändern Sie die Seitenleistenposition in WordPress
Wir hoffen, dieses Tutorial hat Ihnen geholfen zu lernen, wie Sie einen WordPress-Beitrag nur dann anzeigen, wenn er ein bestimmtes benutzerdefiniertes Feld hat. Möglicherweise möchten Sie auch unsere vollständige Anleitung zum Thema Bearbeiten einer WordPress-Website und unsere Expertenauswahl der besten Figma-Plugins für WordPress sehen.
Wenn Ihnen dieser Artikel gefallen hat, abonnieren Sie bitte unseren YouTube-Kanal für WordPress-Video-Tutorials. Sie finden uns auch auf Twitter und Facebook.


ahmed
Ich habe eine Frage, Sir. Wenn ich einen einzelnen Beitrag und benutzerdefinierte Felder anzeigen möchte, was soll ich tun?
Ich möchte den Beitrag nicht mit bestimmten benutzerdefinierten Feldern anzeigen. Ich möchte alle benutzerdefinierten Felder eines Beitrags anzeigen.
Dave101
Hallo, danke für das nützliche Tutorial. Ich habe eine Frage: Auf einer WordPress-Website habe ich einen Meta-Wert namens „meta_country“ gesetzt und dann jeden Beitrag mit dem Land des Artikels versehen, z. B. „us“, „uk“, „fr“ ... Jetzt versuche ich, irgendwo auf der Startseite des Blogs einen Link hinzuzufügen, der eine Liste aller Beiträge mit einem bestimmten Land und einem bestimmten Tag anzeigt. Zum Beispiel alle „UK“-Beiträge mit dem Tag „APPLE“. Ich verstehe nicht, wie das geht, kann mir jemand helfen?
Максим Каминский
vielen Dank, es hat sehr gut geholfen!
pjhooker
Danke!
Eduard Unruh
omg endlich DANKE!
Mario M
Ich konnte keine Ergebnisse generieren, es sei denn, ich habe den Parameter „post_type“ in die Abfrage aufgenommen.
z. B. $the_query = new WP_Query(‘post_type=page&meta_key=color’);
sacha
Wunderbar, einfach und sauber.
Danke.
scottlee.me
@ad Tolle Frage! Ich bin auch neugierig.
ad
Hallo,
Wie könnte ich Beiträge anzeigen, die ein bestimmtes benutzerdefiniertes Feld NICHT haben? Irgendeine Idee?
Danke!!!
tara tin
Soweit ich weiß, muss es aus PHP meta_key!=’your key’ sein
;Sie müssen nur wissen, dass „!“ „nicht“ bedeutet
brunobruno2
Wunderschön! Vielen Dank fürs Teilen. Funktioniert wie ein Zauber.