WordPress Custom Post Types um Sticky-Funktion erweitern

sticky-post

Normalerweise ist es in WordPress möglich, Artikel auf "sticky" zu setzen und somit im Loop oben zu halten. In der deutschen Version nennt sich die Funktion "auf der Startseite halten" und wird im Editor in der rechten Seitenleiste im Bereich "Status" angezeigt.
Wenn ihr allerdings WordPress um Custom Post Types erweitert habt, fehlt dort die Sticky-Funktion. Es gibt verschiedene Wege, sie nachzurüsten.

Web Design mit Sass

Eine Einführung in moderne Stylesheets.

In unserem Shop kaufen
ePub, Mobi + PDF

Bei Amazon kaufen
Kindle-Version

Sticky Custom Post Types Plugin

Die einfachste Lösung um die Sticky-Funktion auch für Custom Post Types nachzuinstallieren, ist die Verwendung des gleichnamigen Plugins. Das Plugin hat vor allem den Vorteil, dass es einfach wieder deinstalliert werden kann, sobald das Feature in der offiziellen WordPress-Installation integriert wurde. Wann das passiert, ist allerdings nicht klar - ein Report mit wechselndem Status zu diesem Feature existiert jedoch bereits. core.trac.wordpress.org/ticket/12702

Das Plugin funktioniert wunderbar, kann allerdings zu Problemen führen, wenn ihr andere Plugins im Einsatz habt, die ebenfalls von Custom Post Types Gebrauch machen. Das bekannte Meteor Slideshow-Plugin hat bei mir beispielsweise plötzlich nichtmehr wie gewünscht gearbeitet.

Nachdem Ihr das Plugin installiert und aktiviert habt, findet ihr die Einstellungen dazu übrigens unter "Einstellungen → Lesen".

Benutzerdefinierte Felder verwenden

Je nachdem wie ihr geplant habt die Sticky-Funktion zu verwenden, bietet es sich auch an, Benutzerdefinierte Felder einzusetzen. Ein mögliches Beispiel: Mal angenommen ihr möchtet ein Portfolio aufbauen und dort bestimmte "Top-Referenzen" immer vor allen anderen anzeigen. Zu diesem Zweck könnt ihr ein Benutzerdefiniertes Feld, im Idealfall eine Checkbox, namens "Top" anlegen und anschließend abfragen ob der Wert dieses Feldes true oder false ist.
Im Template gebt ihr dann zwei Custom Loops hintereinander aus. Der erste zeigt nur Top-Refenzen, der zweite alle Referenzen die nicht "Top" sind. Dazu könnt ihr die Benutzerdefinierten Felder im Query auslesen.

Das folgende Beispiel zeigt einen Query in dem der Custom Post Type "Referenzen" mit dem Benutzerdefinierten Feld "Top" und den Value "Ja" berücksichtigt wird.

<?php
$args = array( 
  'post_type' => 'referenzen', 
  'posts_per_page' => -1, // = alle Beiträge anzeigen
  'meta_key' => 'top',
  'meta_value' => 'Ja'
);

query_posts( $args );
while ( have_posts() ) : the_post();
	
// Inhalt des Loops

endwhile;
wp_reset_query();
?>

Um Benutzerdefinierte Felder zu verwalten lohnt sich übrigens ein Blick auf das Plugin "More Fields".

Natürlich besteht auch die Möglichkeit den WordPress-Core zu "hacken" um die Funktion zu ermöglichen. Da ihr WordPress dann jedoch nicht mehr ohne Weiteres updaten könnt, halte ich diese Variante für unbrauchbar.