Wie der Titel schon sagt geht es um das kleine Feature „Zufälliger Artikel des Tages„. Im Internet sucht man nach einem Plugin mit dieser Funktion ziemlich lange oder findet nichts gescheites. Ahmet von basicblogger.de hat schnell eine kleine Funktion geschrieben, die diese Aufgabe einfach aber effizient bewerkstelligt.
Auch wenn auf basicblogger der Artikel mit „WP-Plugin: Random Post of the day“ betitelt ist, es handelt sich hier um kein Plugin. Es ist nur ein Codeschnipsel, der in die functions.php eingebaut wird und schon könnt ihr ihn nutzen.
Es gibt mittlerweile 2 Versionen: nur den Titel des zufälligen Posts anzeigen und zusätzlich zum Titel auch einen beliebig langen Excerpt ausgeben.
Nur den Titel ausgeben:
< ?php
/*
Random Post of the day by Ahmet Topal, http://ahmet-topal.de/
Informations: http://basicblogger.de/2009/05/26/wp-plugin-random-post-of-the-day/
This Plugins allows you to show a Random Post of the day anywhere using <?php at_random_post(); ?>
*/
function at_random_post() {
global $wpdb;
// Database select a random Post
$query = "SELECT id, post_title, post_name FROM $wpdb->posts WHERE ((post_status='publish') AND (post_type = 'post') AND ($wpdb->posts.post_password = '')) ORDER BY RAND() LIMIT 1";
$randompost = $wpdb->get_results($query);
$post = $randompost[0];
$post_title = htmlspecialchars(stripslashes($post->post_title));
$showpost .= '' . $post_title .'' . "\n";
// Add Options to the Database
add_option('at_random_post', mktime(0,0,0));
add_option('at_get_random_post', $showpost);
if(time() > get_option('at_random_post')+86400)
{
echo $showpost;
// Update Options
update_option('at_random_post', mktime(0,0,0));
update_option('at_get_random_post', $showpost);
}
else
{
$showpostdb = get_option('at_get_random_post');
echo $showpostdb;
}
}
?>
Und mit zusätzlichem Excerpt:
< ?php
/*
Random Post of the day by Ahmet Topal, http://ahmet-topal.de/
Informations: http://basicblogger.de/2009/05/26/wp-plugin-random-post-of-the-day/
This Plugins allows you to show a Random Post of the day anywhere using <?php at_random_post(); ?>
*/
function at_random_post() {
global $wpdb;
// Database select a random Post
$query = "SELECT id, post_title, post_content, post_name FROM $wpdb->posts WHERE ((post_status='publish') AND (post_type = 'post') AND ($wpdb->posts.post_password = '')) ORDER BY RAND() LIMIT 1";
$randompost = $wpdb->get_results($query);
$post = $randompost[0];
$post_title = htmlspecialchars(stripslashes($post->post_title));
$showpost .= '' . $post_title .'' . "
\n" . substr(nl2br($post->post_content), 0, 200) . "...\n";
// Add Options to the Database
add_option('at_random_post', mktime(0,0,0));
add_option('at_get_random_post', $showpost);
if(time() > get_option('at_random_post')+86400)
{
echo $showpost;
// Update Options
update_option('at_random_post', mktime(0,0,0));
update_option('at_get_random_post', $showpost);
}
else
{
$showpostdb = get_option('at_get_random_post');
echo $showpostdb;
}
}
?>
In Zeile 17 muss am Ende die 200 natürlich mit einer Zahl eurer Wahl ersetzt werden. Gemeint sind damit die Anzahl der Buchstaben des Excerpts.
Einbauen könnt ihr diese Funktion mit:
<?php at_random_post(); ?>
Also zum Beispiel in eure Sidebar.php
Wie ihr diese Funktion als Widget nutzen könnt erkläre ich später.
Viel Spaß damit, ihr könnt das Ergebnis auch in meiner Sidebar sehen; allerdings noch nicht hübsch eingebaut, das kommt später.