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…
Mai 26, 2009 um 4:32 pm Uhr
Cool cool. Bin gerade dabei es bei mir einzubauen.
Post mit Backlink kommt sicher noch als Dank :)
Mai 26, 2009 um 4:36 pm Uhr
@Hannes Schuring
Danke, freut mich, dass es dir gefällt :)
Mai 26, 2009 um 7:37 pm Uhr
Vielen dank das du es gecodest hast. Könntest du mir aber bitte noch sagen was ich umstellen muss damit nicht nur der Titel mit dem Link angezeigt wird sondern der Content text von dem Artikel.
Mai 26, 2009 um 8:07 pm Uhr
@Andi
Achso, stimmt, siehe Update (kommt in einer Minute).
Mai 27, 2009 um 5:36 am Uhr
Wonderful Idea! Thank you for the link, and I’m glad my very simple plugin was useful to you!
Wunderbare Idee! Vielen Dank für den Link, und ich bin froh, dass meine einfache Plugin war sehr nützlich für Sie!
Mai 27, 2009 um 6:54 am Uhr
Ic h würde hier einfach nur die Standard Rand Option nehmen und das Ganze in einen manuellen php Cache packen, der sich alle 24 Stunden updated. Damit hat man auch die Datenbankabfragen nur noch alle 24 Stunden ;-)
Mai 27, 2009 um 10:33 am Uhr
@Crazy Girl
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 :)
Mai 27, 2009 um 11:29 am Uhr
Wird jetzt bei jedem Refresh diese Datenbankabfrage gestartet? Das ist zwar keine starke Belastung aber man könnte das doch – wir ihr da oben diskutiert – sicher umgehen oder? Nur um eetwas ressourcenschonender zu sein.
Mai 27, 2009 um 12:23 pm Uhr
@Hannes Schurig
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 :)
Mai 27, 2009 um 12:59 pm Uhr
Maaahlzeit…
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
Mai 27, 2009 um 1:04 pm Uhr
@Hannes Schurig
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
Pingback: Schon gelesen? - Ein neues Widget in meiner Sidebar // hombertho.de