Eine Blogroll für den Blog errichten

Ich weiß nicht, ob die Blogroll gerade wieder so etwas wie eine Renaissance erlebt, aber durch eine Diskussion auf Facebook bin ich auf einen Artikel von Anne auf ihrem Landleben-Blog gestoßen, in dem sie beschreibt, wie sie mit Hilfe eines Plugins ihre Blogroll aufgefrischt hat. Und der Diskussion entnehme ich, das sich doch viele diese Blogliste gerne auf ihrem eigenen Blog einrichten (würden).

Für diejenigen, die nicht wissen sollten, was eine Blogroll ist, hier die Definition:

Eine Blogroll ist eine Linksammlung auf einem Blog, die auf andere Weblogs verweist.

Doch wie richtet man sich diese Blogroll ein? Ich möchte das an dem Beispiel meiner Blogroll zeigen, die auf der vor vielen Jahren von der mittlerweile aus dem WordPress-Universum ausgestiegenen Tanja Preuße aka CrazyGirl als ‚Rocking Blogroll‘ entworfen wurde.

Dabei bezog Tanja das Rocking wohl auf die Tatsache, das hier ein Cronjob regelmäßig die jeweils aktuellsten Beiträge der eingetragenen Blogs abruft.

Als erstes benötigt man dafür natürlich die Links von den Blogs, die in dieser Blogroll auftauchen sollen. In der Regel gibt man diese URLs im Backend unter dem Menüpunkt ‚Links‘ ein. Über eine Datenbankabfrage liest man diese dann später wieder aus, und stellt sie in einer Liste dar.

Wenn man also seine Lieblingsblogs in die Liste eingegeben hat, kommt nun der Code für den ersten Teil der Blogroll:

include '.../wp-blog-header.php';
global $wpdb;

$blr_query = ( " SELECT link_id, link_rss FROM $wpdb->links
				WHERE link_rss != '' " );
$blr_result = $wpdb->get_results($blr_query);

if ( !empty($blr_result) ) {
	add_filter( 'wp_feed_cache_transient_lifetime', create_function( '$a', 'return 1800;' ) );
	include_once(ABSPATH . WPINC . '/feed.php');
	
	echo "
    "; foreach ( $blr_result as $link ) : $blr_url = esc_attr($link->link_rss); $blr_rss = fetch_feed($blr_url); if ( is_wp_error($blr_rss) ) { unset($blr_rss); continue; } else { $blr_rss_items = $blr_rss->get_items( 0, $blr_rss->get_item_quantity(1) ); foreach ( $blr_rss_items as $item ) : $blr_feed_url = $item->get_permalink(); $blr_feed_title = $item->get_title(); $blr_feed_excerpt = $item->get_description(); $blr_feed_date = $item->get_date("Y-m-d H:i:s"); $blr_insert_furl = $wpdb->escape($blr_feed_url); $blr_insert_ftitle = $wpdb->escape($blr_feed_title); $blr_insert_fexcerpt = $wpdb->escape($blr_feed_excerpt); $blr_id = $link->link_id; date_default_timezone_set("Europe/Berlin"); $blr_time = date("Y-m-d H:i:s"); $wpdb->update ( $wpdb->links, array( 'link_last_post_url' => $blr_insert_furl, 'link_last_post_title' => $blr_insert_ftitle, 'link_last_post_excerpt' => $blr_insert_fexcerpt, 'link_last_post_date' => $blr_feed_date, 'link_last_update_gmt' => $blr_time ), array( 'link_id' => $blr_id ) ); echo "
  1. Erfolgreicher Update des letzten Feedartikel für Link ID = ".$blr_id.", Zeitstempel: ".$blr_time."
  2. "; endforeach; remove_filter( 'wp_feed_cache_transient_lifetime', create_function( '$a', 'return 1800;' ) ); } endforeach; echo "
"; }

Als erstes wird die Datei wp-blog-header.php eingebunden (Zeile 1). Dafür braucht ihr den relativen Pfad, in dem die Datei liegt. Diesen findet ihr heraus, indem ihr den nachfolgenden Code in eine leere php-Datei einfügt, sie in das Root-Verzeichnis eures Blogs hochladet und sie im Browser aufruft:

"

Diese Datei müsst ihr, sofort nachdem ihr den Pfad herausgefunden habt, löschen, um den Bösen Buben nicht den Zugang zu Eurem WordPress-Verzeichnis zu offenbaren.

In der nachfolgenden Zeile wird die Datenbank global angesprochen.

Zeile 4 startet eine Abfrage, in der die Datenbanktabelle links angesprochen wird. Gespeichert wird das Ergebnis in der Variablen blr_result. Wenn die Variable nicht leer ist, wird ein Filter hinzugefügt.

Ab Zeile 12 wird dann das Ergebnis in einer geordneten Liste wiedergegeben. Diese enthält auch die Update-Funktion für die Einträge.

In Zeile 48 wird der Filter wieder entfernt, Zeile 50 beendet die Schleife und in der darauffolgenden Zeile wird die geordnete Liste geschlossen.

Nachdem ihr den gesamten Code unter dem Namen blogrollcron.php gespeichert habt, erstellt ihr im Root-Verzeichnis Eures Blogs noch einen Ordner mit dem Namen blogroll. Dort gehört die Datei dann hinein.

Um die Seitenansicht so zu bekommen, wie sie bei mir zu sehen ist, müsst ihr im Verzeichnis Eures Themes noch eine Datei blogroll.php mit folgendem Inhalt erstellen:



  
-1, 'category' => false, 'item_order' => 'link_last_post_date DESC', 'older_than' => 168, 'show_date' => 1, 'show_image' => 'create-thumbnails', 'thumb_size' => 100, 'show_summary' => 1, 'summary_length' => 150) ) ?>

Damit könnt ihr im Backend eine Seite erstellen, der ihr unter Template die Blogroll-Seite zuweist.

Das xxx ersetzt ihr durch die ID der Blogroll-Seite. Diese findet ihr heraus, in dem ihr im Backend auf den Menüpünkt ‚Seite‘ klickt und die Maus auf den Link zur Seite bewegt.

Im Fuß des Browsers erscheint dann die URL. Die Zahl die hinter Post= gehört in die Klammer.

Bei Eurem Hosting-Anbieter, oder wenn dieser keine / zu wenig Cronjobs anbietet bei Cronjob.de, erstellt ihr jetzt einen Cronjob, der die Datei blogrollcron.php in regelmäßigen Abständen abruft. Bei mir ist es jede volle Stunde der Fall.

Wenn ihr mal feststellen wollt, ob das Ganze auch wirklich funktioniert, gebt ihr folgende URL in die Adresszeile Eures Browsers ein:
domain/blogroll/blogrollcron.php

Als Ergebnis solltet ihr folgende Meldung erhalten: Erfolgreicher Update des letzten Feedartikel für Link ID = 40, Zeitstempel: DATUM UHRZEIT

Diese Meldung erscheint für jede URL die in der Linkliste enthalten ist

Um das Ganze dann noch ein bisschen aufzuhübschen, kann man es noch ein wenig mit CSS formatieren

Für den Blogroll-Auszug in der Sidebar nutze ich den folgenden Code:

summary_length bezeichnet dabei – nur nebenbei, die Länge des Textauszuges in Zeichen. Alles andere dürfte (auch) weitgehend selbsterklärend sein.

2 Gedanken zu „Eine Blogroll für den Blog errichten“

  1. Super, vielen Dank für das Tutorial, muss mich da direkt heute abend mal dran versuchen. Mir ist es eh lieber, wenn ich so wenig Plugins wie möglich einsetzen muss und stattdessen lieber über Codesnippets (via Code-Snippets-Plugin) arbeiten kann.

    P.S.: danke, dass du an deinem Blog und den WP-Tutorials dran bleibst ♥

    Antworten
    • Hallo Ina!

      Gerne doch.

      Ich hoffe, ich habe das auch ordentlich erklärt und so beschrieben, das es funktioniert.

      Und jetzt, wo ich ja auch mal Rückmeldungen bekomme und merke, das die Arbeit auch geschätzt wird, bleibe ich natürlich dran.

      PS: Bitte die Änderung im Beitrag beachten, das der Ordner blogroll ist Root-Verzeichnis des Blogs (also dort wo wp-config.php und Co. liegen) hinein gehört – nicht ins Theme-Verzeichnis

      Antworten

Schreibe einen Kommentar