WordPress Kategorie Post Filter Datum Titel ACF

WordPress Kategorie: Post Filter Datum Titel ACF

Inhaltsverzeichnis

Wer mit dem WordPress Elementor arbeitet kann seine Archive (Kategorien) selbst gestalten. Dafür können die Module “Beiträge archivieren” oder “Beiträge” genutzt werden. Leider gibt es aber keine Möglichkeit “derzeit” die Beiträge in den jeweiligen Kategorien zu filtern! Nach Titel, Datum oder ACF Feldern.

Dennoch gibt es eine simple Lösung, um doch filtern zu können! Man benötigt diesen Code, der am Ende in die functions.php bei WordPress eingetragen werden muss:

				
					function posts_sort_alphabetical( $query ) {
    if ( is_admin() || ! $query->is_archive )
        return $query;
	
		$query->set('orderby', 'meta_value');	
		$query->set('meta_key', 'online_status');	 
		$query->set('order', 'DESC');
        return $query; 
}
add_action( 'pre_get_posts', 'posts_sort_alphabetical', 1 );
				
			

Kurze Erklärung zum Snippet!

Dieser Code ist eine Funktion in WordPress, die die Sortierung von Beiträgen auf Archivseiten basierend auf einem benutzerdefinierten Meta-Feld “online_status” ändert. Lass mich den Code Schritt für Schritt erklären:

1. `function posts_sort_alphabetical( $query ) { … }`:
Hier wird eine benutzerdefinierte Funktion mit dem Namen “posts_sort_alphabetical” definiert. Diese Funktion nimmt das `$query`-Objekt als Parameter entgegen, das die Abfrage für das Abrufen von Beiträgen darstellt.

2. `if ( is_admin() || ! $query->is_archive ) return $query;`:
Diese Zeile überprüft, ob sich der aktuelle Seitenaufruf im Administrationsbereich befindet oder ob es sich nicht um eine Archivseite handelt. Wenn eine dieser Bedingungen zutrifft, wird die Funktion beendet und das unveränderte `$query`-Objekt wird zurückgegeben. Dadurch wird sichergestellt, dass die Änderungen nur auf Archivseiten angewendet werden und nicht im Admin-Bereich.

3. `$query->set(‘orderby’, ‘meta_value’);`:
Hier wird die Abfrage für die Beiträge geändert, um die Ergebnisse nach einem benutzerdefinierten Meta-Feld zu sortieren. Das Feld, nach dem sortiert wird, ist “online_status”.

4. `$query->set(‘meta_key’, ‘online_status’);`:
Mit dieser Zeile wird das benutzerdefinierte Meta-Feld “online_status” als das Feld definiert, nach dem die Beiträge sortiert werden sollen. Dieses Meta-Feld muss zuvor in den Beiträgen mit dem entsprechenden Wert vorhanden sein, damit die Sortierung basierend auf diesem Feld erfolgt.

5. `$query->set(‘order’, ‘DESC’);`:
Hier wird festgelegt, dass die Beiträge in absteigender Reihenfolge sortiert werden sollen (von neuestem zu ältestem), basierend auf dem Wert des benutzerdefinierten Meta-Felds “online_status”.

6. `return $query;`:
Nachdem die Änderungen an der Abfrage vorgenommen wurden, wird das modifizierte `$query`-Objekt zurückgegeben.

7. `add_action( ‘pre_get_posts’, ‘posts_sort_alphabetical’, 1 );`:
Mit dieser Zeile wird die Funktion “posts_sort_alphabetical” als Aktion mit dem Hook “pre_get_posts” hinzugefügt. Dadurch wird der Filter angewendet, bevor die Beiträge auf einer Archivseite abgerufen werden.

Zusammenfassend sortiert dieser Code die Beiträge auf Archivseiten nach dem benutzerdefinierten Meta-Feld “online_status” in absteigender Reihenfolge. Dadurch kannst du die Beiträge basierend auf den Werten dieses Meta-Felds sortieren und die Anzeige der Beiträge auf deiner WordPress-Website anpassen. Beachte, dass das Meta-Feld “online_status” in den Beiträgen vorhanden sein muss und die Werte richtig eingerichtet sein müssen, damit die Sortierung ordnungsgemäß funktioniert.

meta_key meta_value
online_status 1 oder 0

Die Abfrage wird hier also quasi so gemacht: 

Sortiere (order_by) mir alle Beiträge nach dem (meta_value) absteigend (DESC), wo der meta_key online_status heißt.

Snippet in der functions.php eintragen

In deinem WordPress Theme… bei mir das Elementor Hello Theme… klickst du im Backend auf der linken Seite auf Design > Theme-Datei-Editor und dann auf der rechten Seite auf Theme-Funktionen (functions.php).

Am Ende fügst du dann das Snippet von oben ein! Unten klickst du dann zum Schluss auf Datei aktualisieren.

ID von der WordPress Category ausschliessen

Der Filter oben reagiert auf alle Kategorien! Möchtest du eine WordPress Kategorie davon ausschließen, so musst du folgendes hinzufügen: ($query->set( ‘cat’,’-1′ ); // Category entfernen)

				
					function posts_sort_alphabetical( $query ) {
    if ( is_admin() || ! $query->is_archive )
        $query->set( 'cat','-1' ); // Category entfernen
        return $query;
	
		$query->set('orderby', 'meta_value');	
		$query->set('meta_key', 'online_status');	 
		$query->set('order', 'DESC');
        return $query; 
}
add_action( 'pre_get_posts', 'posts_sort_alphabetical', 1 );
				
			

Kurze Erklärung zum Snippet!

Dieses Skript ist eine Funktion in WordPress, die die Sortierung von Beiträgen auf Archivseiten ändert. Es sortiert die Beiträge nach einem benutzerdefinierten Meta-Feld namens “online_status”. Lass mich den Code Schritt für Schritt erklären:

1. `function posts_sort_alphabetical( $query ) { … }`:
Hier wird eine benutzerdefinierte Funktion mit dem Namen “posts_sort_alphabetical” definiert. Diese Funktion nimmt das `$query`-Objekt als Parameter entgegen, das die Abfrage für das Abrufen von Beiträgen darstellt.

2. `if ( is_admin() || ! $query->is_archive ) { … }`:
Diese if-Bedingung überprüft, ob sich der aktuelle Seitenaufruf im Administrationsbereich befindet oder ob es sich nicht um eine Archivseite handelt. Wenn eine dieser Bedingungen zutrifft, wird der Code innerhalb der geschweiften Klammern nicht ausgeführt, und die Funktion gibt das unveränderte `$query`-Objekt zurück. Dadurch wird sichergestellt, dass die Änderungen nur auf Archivseiten angewendet werden und nicht im Admin-Bereich.

3. `$query->set( ‘cat’, ‘-1’ );`:
Innerhalb der if-Bedingung wird das Attribut “cat” der Abfrage auf den Wert “-1” gesetzt. Dies bedeutet, dass Beiträge ohne eine spezifische Kategorie-ID abgerufen werden. Es entfernt praktisch die Kategoriefilterung und stellt sicher, dass Beiträge aus allen Kategorien angezeigt werden.

4. `return $query;`:
Nachdem die entsprechende Änderung an der Abfrage vorgenommen wurde (falls notwendig), wird das modifizierte `$query`-Objekt zurückgegeben.

5. Restlicher Code:
Der restliche Code wird nur ausgeführt, wenn die Bedingung in Schritt 2 nicht erfüllt ist, was bedeutet, dass es sich um eine Archivseite handelt und wir die Beiträge sortieren können.

6. `$query->set(‘orderby’, ‘meta_value’);`:
Hier wird die Abfrage für die Beiträge geändert, um die Ergebnisse nach einem benutzerdefinierten Meta-Feld zu sortieren. Das Feld, nach dem sortiert wird, ist “online_status”.

7. `$query->set(‘meta_key’, ‘online_status’);`:
Mit dieser Zeile wird das benutzerdefinierte Meta-Feld “online_status” als das Feld definiert, nach dem die Beiträge sortiert werden sollen. Dieses Meta-Feld muss zuvor in den Beiträgen mit dem entsprechenden Wert vorhanden sein, damit die Sortierung basierend auf diesem Feld erfolgt.

8. `$query->set(‘order’, ‘DESC’);`:
Hier wird festgelegt, dass die Beiträge in absteigender Reihenfolge sortiert werden sollen (von neuestem zu ältestem), basierend auf dem Wert des benutzerdefinierten Meta-Felds “online_status”.

9. `return $query;`:
Nachdem die Änderungen an der Abfrage vorgenommen wurden, wird das modifizierte `$query`-Objekt zurückgegeben.

10. `add_action( ‘pre_get_posts’, ‘posts_sort_alphabetical’, 1 );`:
Mit dieser Zeile wird die Funktion “posts_sort_alphabetical” als Aktion mit dem Hook “pre_get_posts” hinzugefügt. Dadurch wird der Filter angewendet, bevor die Beiträge auf einer Archivseite abgerufen werden.

Zusammengefasst sortiert dieses Skript die Beiträge auf Archivseiten nach dem benutzerdefinierten Meta-Feld “online_status” in absteigender Reihenfolge. Dadurch kannst du die Beiträge basierend auf den Werten dieses Meta-Felds sortieren und die Anzeige der Beiträge auf deiner WordPress-Website anpassen. Beachte, dass das Meta-Feld “online_status” in den Beiträgen vorhanden sein muss und die Werte richtig eingerichtet sein müssen, damit die Sortierung ordnungsgemäß funktioniert.

*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