Durch den Artikel von Robert inspiriert, habe mich auf die Suche nach Plugins begeben, die die Datenbankabfrage nach oben drücken. Robert gibt dazu ja schon eine Menge an Tipps und viele seiner Kommentare erläutern noch mehr Hintergründe.
Nun, ich wollte aber auf die Darstellung meiner Startseite nicht unbedingt verzichten. Die Posts und Kommentare habe ich bisher mit dem Plugin „Customizable Comment Listings“ in die Seite geladen. Leider drückt das Plugin die Querie-Abfrage enorm hoch. In meinem Fall möchte ich die letzten 10 Beiträge und Kommentare auf der Startseite darstellen, deshalb habe ich mich dafür entschieden, das ganze mit dem RSS-NewsFeed zu ermöglichen.
Mit der hier vorgestellten Lösug konnt ich mehr als 40 Anfragen, welche das Plugin duchführte, beseitigen. Auf anderen Blogs, wo ich WP als CMS einsetze, habe ich so ebenfalls einige Anfragen (ca. 20 Queries) unterbinden können. In den Fällen stelle ich nur die letzten Kommentar im Sidebar dar, bzw. auf einer extra Seite.
Abfrage der DB-Anfragen:
Um die DB-Anfragen und die benötigte Zeit auslisten, muss die folgenden Zeilen in euer Template integriert werden, am besten in den Footer.
<?php echo $wpdb->num_queries; ?> queries.
<?php timer_stop(1); ?> seconds.
Abfrage der Inhalte mit RSS
Der Feed von WordPress enthält alle relevanten Inhalte, so dass es eigentlich recht leicht ist, diese zu laden und entsprechend darzustellen. Dazu habe ich meine Plugin „RSSImport“ ein wenig in der Ausgabe verändert, was allerdings nur notwendig ist, da ich das Design anpassen wollte.
Ein weiterer Vorteil von WordPess ist die vielfältige Ausgabe von Feeds, so kann prinzipiell aus jedem Teil der Seite ein Feed ausgegeben werden.
Beispiel:
- Feed der Kommentare – http://www.Blogadresse.de/comments/feed/
- Feed einer Kategorie – http://www.Blogadresse.de/category/Kategoriename/feed/
Mit Hilfe eines PHP-Plugins ist es möglich den etsprechenden Code in den Seiten und Beiträgen auszuführen. Somit kann eine Seite erstellt werden, ohne ein neues Template zu erstellen.
In meinem Fall sieht der Code der Startseite, also direkt in der Seite (mit PHP-Plugin „PHP Exec„) folgendermaßen aus.
Willkommen
Herzlich Willkommen, ...
<?php
// Get Total Posts
function get_totalposts() {
global $wpdb;
$totalposts = $wpdb->get_var("SELECT COUNT(ID) FROM $wpdb->posts WHERE post_status = 'publish'");
return $totalposts;
}
// Get Total Comments
function get_totalcomments() {
global $wpdb;
$totalcomments = $wpdb->get_var("SELECT COUNT(comment_ID) FROM
$wpdb->comments WHERE comment_approved = '1'");
return $totalcomments;
}
?>
Weblog - Die letzten Zehn
<?php RSSImportTwo(10,"https://bueltge.de/wp-rss.php",true,false,true,200); ?>
Kommentare - Die letzten Zehn
<?php RSSImportTwo(10,"https://bueltge.de/comments/feed/",true,false,true,100); ?>
Der String <?php ?>
ist für die Verwendung von php-Code in den Seiten notwendig, dass ist vom jeweiligen php-Plugin abhängig.
Zusätzlich bilde ich noch zwei Funktionen (get_totalposts
und get_totalcomments
), in der alle veröffentlichten Beiträge und Kommentare aus der Datenbank gelesen werden. Damit stelle ich die Gesamtzahl zur Verfügung. Das gleiche mache ich übrigens in der sidebar.php, um die Anzahl der Kategorien und Beiträge anzuzeigen.
Hier ist eine Version des PHPImoprt-Plugins zu finden, mit der automatisch ein Link eingefügt wird zum „Weiterlesen“ der Beiträge und Kommentare. Außerdem könnt ihr die Zeichen angeben, die auf der Seite angezeigt werden sollen.
Der Aufruf der Funktion erfolgt folgendermaßen:
<?php RSSImportTwo(10,"/feed/",true,false,true,200); ?>
(10-Anzahl der News,“FeedAdresse“,true-Ausgabe mit Description,false-Titel nicht kürzen,true-Description kürzen,200-Zeichen von Description)
Mehr Infos und den Download zum verwendeten Plugin gibt es hier: RSSImportTwo Plugin
Stylesheet
Das Plugin gibt die Feeds innerhalb eines div-Containers aus, mit der class rssimporttwo
. Darüber kann die Ausgabe ein wenig formatert werden. Die Title der beiträge und Kommentare werden mit dem Tag h5 ausgeben.
In meinem Fall formatiere ich den div zum Teil so, aber dass nur als Beispiel. Der Link zum „Weiterlesen“ wird über die Klasse „more-link“ formatiert, was sicher in jedem Theme vorhanden ist.
h1, h2, h3, h5 {
font-family: Palatino, "Palatino Linotype", "Book Antiqua",
"URW Palladio L", Georgia, serif;
font-weight: bold
}
h5 {
font-size: 1.3em;
margin: 20px 0 0 -10px
}
.rssimporttwo {
margin-left: 10px
}