Zufäller Artikel des Tages ohne Plugin anzeigen

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.

4 Kommentare

  1. Hehe, stimmt du hast recht, aber am Anfang war es noch ein Plugin, nur weils klein ist, habe ich es auch als functions.php Version angeboten 🙂

    Ein mini fehler: at_random_post(); davor muss stehen, du hast denke ich dies im visual ansicht geschrieben, und wurde dehalb geändert 🙂

    Aber danke für dieses tolle Artikel, ich freue mich, dass es dir gefällt 🙂

Schreibe einen Kommentar