WordPress bietet die Möglichkeit, Beiträge in der Zukunft zu veröffentlichen – ein praktisches Tool. Die Beiträge werden dann zum hinterlegten Zeitpunkt online gestellt ohne das der Autor nochmal veröffentlichen muss.
Warum sollte man eigentlich nicht diese Beiträge als Vorgeschmack nutzen, den Besucher der Site ein wenig anzufüttern und damit einen kleinen Einblick in die zukünftigen Veröffentlichungen geben. Vielleicht kommt er ja aufgrund der Artikelvorschau wieder, wenn der Beitrag online ist. Dazu bedarf es einer kleinen Abfrage aus der Datenbank und ein Vergleich mit dem aktuellen Datum. Die nötigen Zeilen stehen im folgenden bereit.
<?php
global $wpdb;
$fb_date_today = current_time('mysql'); //today date GMT
if ( $scheduled = $wpdb->get_results("SELECT ID, post_title, post_date_gmt FROM $wpdb->posts WHERE post_status = 'publish' AND post_date_gmt > '$fb_date_today' ORDER BY post_date ASC") ) : ?>
Vorgesehene Beiträge
<?php
foreach ($scheduled as $post) {
if ($post->post_title == '')
$post->post_title = sprintf(__('Post #%s'), $post->ID);
echo "- " . sprintf(__('%1$s in %2$s'), "$post->post_title", human_time_diff( current_time('timestamp', 1), strtotime($post->post_date_gmt. ' GMT') )) . "
";
}
?>
<?php endif; ?>
Update
Arbeitest Du mit einer WordPress-Version >2.1.*, so muss die SQL-Abfrage ein wenig anders aussehen – future statt puplish.
SELECT ID, post_title, post_date_gmt FROM $wpdb->posts WHERE post_status = 'future' AND post_date_gmt > '$fb_date_today' ORDER BY post_date ASC
Alternative WP-Query
Alternativ kann man das ganze auch über einen Query von WordPress steuern. Dieser Query ist für den Loop verantwortlich und läßt sich in vielerlei Form nutzen und anpassen.
<?php
$my_query = new WP_Query('post_status=future&order=DESC&showposts=5');
if ( $my_query->have_posts() ) {
_e('Vorgesehene Beiträge
');
echo '';
while ( $my_query->have_posts() ) :
$my_query->the_post();
$do_not_duplicate = $post->ID;
echo '- ' . get_the_title() . __(' (erscheint am ') . get_the_time('d.m.Y') . __(')') . '
';
endwhile;
echo '
';
}
?>