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
}
Hey Frank,
irgendwas scheint im ersten teil von:
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;
}
?>
nicht zu stimmen..
Will ich die Funtkion nutzen, zeigt er mir irgend einen MySQL Fehler an…
Hallo Fabian,
achte bitte darauf, dass die Hochkommas und Anführungszeichen richtig sind. Die werden durch WP bei mir verändert. Ersetze alle nochmal händisch.
Der Code selbst stimmt, denn er läuft bei mir auf zwei Blogs und ich nutze ihn auch in einigen Plugins.
LG Frank
Hi,
I tried your pluggin and it works perectly for the rss… But a strange bug takes place when someone tries to write a message. It shows „Warning: Cannot modify header information – headers already sent by (output started at /home/uhecnet0/public_html/b/wp-content/plugins/rssimporttwo.php:1) in /home/uhecnet0/public_html/b/wp-includes/pluggable.php on line 275“
Also, there is this strange „“ thing at the upper left of my page.
Any idea how to solve that?
Sorry, I don’t speak Deutsch…
Hello Louis,
this is a bug in the script with utf-coding. I have repair the bug and i hope, the plugin works correctly.
with best regards
Frank
Das Plugin funktioniert exzellent. Einzige Frage, die bleibt: wie kann ich das Komma ‚,‘ am Ende des Feeds löschen?
THX
Chris
Site: http://www.einstern.at — Plugin läuft unter der Überschrift Subscription
Für deine Anwendung ist RSSImport besser geeignet. Das Komma kann ich nicht nachvollziehen, hast du den Code des Plugins geändert und da vielleicht ein Komma zu viel drin?
Hi Frank, danke für den Hinweis. Hab RSSImport installiert und das funktioniert perfekt. THX C
Frank,
neues Seitenlayout sieht sehr gut aus!!
Dankeschön! Jetzt kann auch ich meine Comments zählen!