Servervoice (Andi) @twitter hat mir vorgeschlagen, ein Wordpress Plugin zu programmieren, welches jeden Tag einen zufälligen Artikel aus der Datenbank z.B. auf der Sidebar anzeigt. Ich dachte, es gäbe schon so ein Plugin, aber habe nichts gefunden, daraufhin habe ich selber das kleine Plugin programmiert, mit dem Namen “Random Post of the day“.
Dieses Plugin speichert jeden Tag einen per Zufall gewählten Artikel in die Optionen Tabelle. Gleichzeitig wird auch in die selbe Optionen Tabelle ein weiterer Eintrag mit dem Zeitstempel von dem aktuellen Tag um 00:00 Uhr (mktime) gespeichert (danke @sgehrig).
Dieses kleine Code will ich nicht als Plugin anbieten, deshalb müsst ihr den Code unten kopieren, und in eure functions.php Datei des Themes einfügen und abspeichern:
<?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 .= '<a href="' . get_permalink($post->id) . '" title="'. $post_title . '">' . $post_title .'</a>' . "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; } } ?>
Nutzung:
In eine Template Datei wie z.B. in die Sidebar (sidebar.php), dort wo das Zufallsartikel erscheinen soll, einfach:
<?php at_random_post(); ?>
einfügen, und die Datei abspeichern.
Information:
Ich habe als Basis das Plugin WP-Single-Random-Post benutzt, welches bei jedem Seitenaufruf einen neuen Artikel anzeigen lässt, und dies so erweitert, dass jeden Tag ein neuer erscheint, und nicht bei jedem Aufruf.
Bei Fehlern bitte via Email und bei Fragen gerne Kommentar auf diesem Artikel :)
Update:
Um noch den Content des Artikels anzuzeigen könnt ihr:
// 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 .= '<a href="' . get_permalink($post->id) . '" title="'. $post_title . '">' . $post_title .'</a>' . "n";
zu
// 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 .= '<a href="' . get_permalink($post->id) . '" title="'. $post_title . '">' . $post_title .'</a>' . "<br />n" . substr(nl2br($post->post_content), 0, 200) . "...n";
ändern, hier ist 200 gleich der Anzahl der Buchstaben des Artikels…







Hannes Schurig [www] sagt:
Post mit Backlink kommt sicher noch als Dank :)
Ahmet Topal [www] sagt:
Danke, freut mich, dass es dir gefällt :)
Andi [www] sagt:
Ahmet Topal [www] sagt:
Achso, stimmt, siehe Update (kommt in einer Minute).
Daniel Costalis [www] sagt:
Wunderbare Idee! Vielen Dank für den Link, und ich bin froh, dass meine einfache Plugin war sehr nützlich für Sie!
Crazy Girl [www] sagt:
Ahmet Topal [www] sagt:
Die Datenbank Abfrage kannst du auch in den 24 Stunden Loop packen, dass ist auch richtig :)
@Daniel
I’m happy, that you like my Version, and i thank you for the Plugin, so it was easier to start for me :)
Hannes Schurig [www] sagt:
Ahmet Topal [www] sagt:
Jep das geht, dann einfach von
// Database select a random Post
bis
// Add Options to the Database
Ausschneiden und in den if reinpacken (aber gleich in die erste Zeile danach)
wichtig ist halt nur, dass dies bei dem geht, der schon einen Tag drinn hatte, also bei dir geht dies, ansonsten bei neuinstallation (erste aktivierun) kommt dann ein error. Aber du kannst dies schon machen :)
Hannes Schurig [www] sagt:
Interessant, mach ich das mal.
Na dann kannst du doch sicher mit ner if am Anfang abfragen, ob at_get_random_post gesetzt ist und dementsprechend verzeigen, dann gehts auch bei der Neuinstallation.
Ey das ist doch echt Plugin-fähig. Bastel doch mal nen Frontend wo man ganz easy die Anzahl der Excerpt-Buchstaben eingeben kann, dann noch mit Checkbox für ‘passwortgeschützt Posts mit einbeziehen’ (posts.post_password dementsprechend anpassen) und son Kram.
Dann public machen und Besucherströme abwarten ^^
Ich muss mir gleich mal deine anderen Plugins/Funktionen angucken
Ahmet Topal [www] sagt:
Jep, stimmt sogar, dass ist eigentlich ganz easy. Muss ich machen^^
Meine anderen Plugins sind ziemlich alt :) Die sind auch nicht so gut, aber die Funktionen, joa, die sind gut ^^Denk ich mal :D
Schon gelesen? – Ein neues Widget in meiner Sidebar // hombertho.de [www] sagt:
[...] Widget zeigt zufällig einen Post. Dieser wird mithilfe des einfachen Code von Ahmet [...]
14.Jul.2009 um 1:32 pm