WordPress, Beiträge gefiltert nach deinem Custom ACF Field anzeigen​

Wordpress Custom Query Filter Elementor Abfrage nach ACF Field
Inhaltsverzeichnis

Wenn du mit dem WordPress Elementor Pro arbeitest hast du die Möglichkeit deine Beiträge nach einem selbst definierten Filter auszulesen.

In meinem Fall arbeite ich mit dem Plugin ACF wo ich verschiedene Felder in meinen Artikeln nutze. So möchte ich nun als Beispiel alle Beiträge über das Elementor Widget “Beiträge” ausgeben und filtern.

Dazu musst du in der function.php folgende Funktion hinzufügen:

				
					add_action( 'elementor/query/jetztonline', function( $query ) {
    // Here we set the query to fetch posts with
    // post type of 'custom-post-type1' and 'custom-post-type2'
    $query->set( 'post_type', [ 'post' ] );
    
    $meta_query = $query->get( 'meta_query' );

    // If there is no meta query when this filter runs, it should be initialized as an empty array.
    if ( ! $meta_query ) {
        $meta_query = [];
    }

    // Append our meta query
    $meta_query[] = [
        'key' => 'online_status',
        'value' => '1',
        'compare' => '=',
		'orderby' => 'rand',
    ];
    $query->set( 'meta_query', $meta_query );    
} );
				
			

Bei key => ‘online_status’ schreibst du das Feld aus ACF hinein, wonach du die Beiträge filtern möchtest.

Bei Value => ‘1’ schreibst du den Wert hinein der in deinen Feldern vorkommt. Zum Beispiel bei Autos (Feldname Farbe) dann halt Rot, sodass nur noch Rote Autos ausgelesenen werden!

compare => ‘rand’ bedeutet, dass er immer wieder andere heraussuchen soll.

Du kannst auch = schreiben wenn der Wert gleich sein soll. Oder > größer als oder < kleiner als! oder auch != ungleich, also alle Autos die dann nicht Rot sind 😉

Oben bei add_action( ‘elementor/query/jetztonline‘ setzt du deinen Wunschnamen ein statt jetztonline. Diesen Namen verwendest du dann auch in WordPress! So kannst du unterschiedliche Abfragen gestalten und anderweitig immer nutzen!

Erklärung

Diese Code-Erklärung behandelt eine Funktion, die an den Hook ‘elementor/query/jetztonline’ gebunden ist. Diese Funktion dient dazu, die Abfrage (Query) für das Elementor-Widget zur Anzeige von Beiträgen zu ändern und spezifische Beiträge auszuwählen, die bestimmte Metadaten enthalten.

Hier ist eine ausführliche Erklärung des Codes:

1. `add_action(‘elementor/query/jetztonline’, function($query) { … } );`:
Diese Zeile registriert die Funktion als Aktion mit dem Hook ‘elementor/query/jetztonline’. Wenn das Elementor-Widget Beiträge abfragt, wird diese Funktion ausgeführt, um die Abfrage entsprechend zu ändern und die gewünschten Beiträge zu filtern.

2. `$query->set(‘post_type’, [‘post’]);`:
Diese Zeile setzt die Abfrage (Query) so, dass nur Beiträge mit dem Post-Typ ‘post’ abgerufen werden. Das bedeutet, dass das Widget nur Beiträge anzeigt und keine anderen Post-Typen wie Seiten oder benutzerdefinierte Post-Typen.

3. `$meta_query = $query->get(‘meta_query’);`:
Hier wird die vorhandene Meta-Abfrage (Meta Query) der Abfrage (Query) in einer Variablen namens `$meta_query` gespeichert. Die Meta-Abfrage ermöglicht es, nach spezifischen Metadaten in den Beiträgen zu suchen.

4. `if (! $meta_query) { $meta_query = []; }`:
Diese Bedingung überprüft, ob bereits eine Meta-Abfrage existiert. Wenn keine Meta-Abfrage vorhanden ist, wird sie als leeres Array initialisiert. Dies stellt sicher, dass die Meta-Abfrage immer als Array vorhanden ist, auch wenn keine anderen Meta-Abfragen bisher definiert wurden.

5. `$meta_query[] = [‘key’ => ‘online_status’, ‘value’ => ‘1’, ‘compare’ => ‘=’, ‘orderby’ => ‘rand’, ];`:
Hier wird eine neue Meta-Abfrage hinzugefügt, um Beiträge zu filtern, die ein bestimmtes Metafeld mit dem Schlüssel ‘online_status’ und dem Wert ‘1’ haben. Das bedeutet, dass nur Beiträge ausgewählt werden, die in ihrem Metafeld ‘online_status’ den Wert ‘1’ haben.

Die `’compare’ => ‘=’`-Einstellung bedeutet, dass die Abfrage genau nach Beiträgen sucht, bei denen das Metafeld ‘online_status’ den Wert ‘1’ hat.

Die `’orderby’ => ‘rand’`-Einstellung bedeutet, dass die ausgewählten Beiträge zufällig angezeigt werden. Das heißt, die Beiträge werden jedes Mal in einer anderen Reihenfolge angezeigt.

6. `$query->set(‘meta_query’, $meta_query);`:
Hier wird die geänderte Meta-Abfrage wieder der Hauptabfrage (Query) zugewiesen. Dadurch wird die ursprüngliche Abfrage mit der neuen Meta-Abfrage aktualisiert und die gewünschten Beiträge werden entsprechend gefiltert und angezeigt.

Zusammengefasst ermöglicht dieser Code die Anzeige von Beiträgen mit dem Post-Typ ‘post’, die ein bestimmtes Metafeld mit dem Schlüssel ‘online_status’ und dem Wert ‘1’ haben, und die Beiträge werden zufällig angezeigt. Diese Anpassung kann verwendet werden, um gezielt Beiträge mit spezifischen Metadaten in einem Elementor-Widget zu präsentieren.

*In diesem Artikel sind Partner-Links enthalten. Durch einen Klick darauf gelangst du direkt zum Anbieter. Solltest du dich dort für einen Kauf entscheiden, erhalte ich ei­ne kleine Provision. Danke für deine Unterstützung! Angebote sind immer nur gültig zum Zeitpunkt der Veröffentlichung des Artikels. Preise können sich ändern. Bitte überprüfe den aktuellen Preis auf der Website des Links.
Picture of Broschi
Broschi
Moin ich bin Broschi und das hier ist mein Blog. Abonniere gerne auch meinen Youtube Kanal! Du findest mich auch auf Pinterest, Instagram und Twitter. Kennst du schon meinen Amazon Shop*?
Amazon Shop
Affiliate Link!
ebay Angebote
Affiliate Link
Broschis Blog Newsletter
NEWSLETTER ABONNIEREN!
Teile die Begeisterung: Erzähle deinen Freunden von diesem Artikel! Und lass uns deine Gedanken hören – hinterlasse mir jetzt deinen Kommentar!

Deine Gedanken sind gefragt! Hast Du Fragen oder Ideen für den Artikel, lass sie raus. Dein Kommentar öffnet die Tür zu lebhaften Diskussionen und bietet eine Plattform für den Austausch von Wissen und Hilfe unter den Lesern. Teile gerne auch mit, falls dir etwas gefehlt hat – wir sind gespannt auf deine Meinung!

Schreibe deinen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

— Amazon Shop von Broschisblog —

Entdecke meine Favoriten
in meinem Amazon Shop!