WordPress: Geplante Beiträge inkl. Permalink anzeigen
Geplante Beiträge können über einen entsprechenden Loop angezeigt werden. Mit einer kleinen Anpassung erhalten auch diese noch nicht veröffentlichten Inhalte eine URL.

WordPress bietet die Möglichkeit Beiträge zu planen und automatisch zu einem zukünftigen Zeitpunkt zu veröffentlichen. Die Funktion wird aber auch häufig dazu eingesetzt eine Kalenderfunktion zu realisieren. Stark vereinfacht funktioniert das so: Die einzelnen Termine (Beiträge) werden zunächst geplant, anschließend wird ein individueller Loop verwendet um alle Beiträge anzuzeigen die den post_status
future
haben. Sobald das Datum erreicht ist, ändert WordPress den Status in published
, folglich verschwinden abgelaufene Termine aus dem Kalender. Auf diese Weise lassen sich sehr schön anstehende Termine, beispielsweise die Tourdaten einer Band, anzeigen.
Geplante Beiträge nur für eingeloggte User / Admins sichtbar
Sofern man die Termine nur in einer Übersicht anzeigen möchte funktioniert die Vorgehensweise mit dem individuellen Loop einwandfrei. Alle geplanten Inhalte des Beitrags lassen sich über den Loop und über RSS-Feeds abbilden. Möchte man hingegen auch eine Detailansicht (single.php
) zu jedem Termin anbieten, steht man schnell vor einem Problem. Die Detailansicht, die über den von WordPress generierten Permalink erreichbar ist, funktioniert nicht. Nur eingeloggte User können die geplanten Beiträge sehen – alle anderen Besucher sehen einen Error 404.
Alle geplanten Beiträge anzeigen
Mit folgenden Code-Snippet ist das Problem gelöst. Alle geplanten Beiträge werden angezeigt unabhängig von Kategorie, Post Type etc.
Fügt den nachfolgenden Code ganz einfach in die functions.php
eures Themes ein.
/* Show future posts for all categories, post types etc. */
function show_future_posts($posts)
{
global $wp_query, $wpdb;
if(is_single() && $wp_query->post_count == 0)
{
$posts = $wpdb->get_results($wp_query->request);
}
return $posts;
}
add_filter('the_posts', 'show_future_posts');
Danke für den Beitrag. Wie ist es, wenn nur bestimmte Beiträge so erscheinen sollen, z.B. nur Beiträge einer Kategorie, oder nur Beiträge auf einer Seite? Man kann ja einen „Kalender“ haben und einen Blog. Der Blog sollte dann wirklich nur veröffentlichtes anzeigen.
Du könntest mit einem individuelle Loop (Custom Query – z.B. WP_Query) zusätzlich zum Zeitstempel auch noch abfragen, ob die Beiträge in einer bestimmten Kategorie liegen (z.B. Blog bzw. Kalender).
// WP_Query arguments
$args = array(
'category_name' => 'kalender', // Kategorie-Name
'post_status' => 'future', // Nur geplante Beiträge
'posts_per_page' => -1, // Alle geplanten Beiträge ohne Limit
'order' => 'ASC', // Aufsteigend nach Veröffentlichungsdatum sortieren
'orderby' => 'date' // Nach Datum sortieren
);
Interessant, und wie funktioniert die selbe Funktion für den öffentlichen Bereich um geplante Beiträge einfach nur anzuzeigen im Frontend? Ohne den Permalink dann natürlich.
@Stefan: Mit einem Custom Query listet du die Beiträge auf
http://codex.wordpress.org/Class_Reference/WP_Query
http://wp-magazin.ch/blog/den-leser-in-die-zukunft-blicken-lassen-976/
Moin Jonas,
vor Jahren hatte den Snippet vom wp-magazin.ch auch im Blog. Mittlerweile ist dieser aber „On hold“ Du hast nicht zufällig den Code von Pascal Birchler noch.
tks
Kosta
Hallo Kosta, nein – ein anderes Snippet habe ich nicht mehr.