Wie könnte man die Woche besser beginnen, als mit zwei kleinen Wordpress-Tricks? Da würde mir einiges einfallen, aber ich habe gerade nichts anderes da. Erstens: Meistkommentierte Beiträge anzeigen. Kann man sich in die Sidebar oder in eine Archiv-Seite einbauen. Hab ich kürzlich gebastelt und will das nur posten, damit ich es das nächste Mal hier rauskopieren kann.
<ol>
<?php
$results = $wpdb->get_results("
SELECT $wpdb->posts.id, $wpdb->posts.post_title, $wpdb->posts.comment_count
FROM $wpdb->posts
WHERE $wpdb->posts.post_type = 'post'
AND $wpdb->posts.post_status = 'publish'
ORDER BY $wpdb->posts.comment_count DESC
LIMIT 10
");
foreach ($results as $post) {
echo '<li><a href="'.get_permalink($post->id).'">'.$post->post_title.'</a> (<strong>'.$post->comment_count.'</strong> Kommentare)</li>'."n";
}
?>
</ol>
Das gibt die 10 meistkommentierten Posts aus. Wenn es mehr sein sollen, kann man die Zahl hinter LIMIT
ändern, wenn man auch Pages anzeigen lassen möchte, kann man das $wpdb->posts.post_type = 'post'
durch $wpdb->posts.post_type IN('post', 'page')
ersetzen.
Zweitens ein kleiner Performance-Tipp, der nur zwei Extra-Zeilen in der wp-config.php
benötigt. Eigentlich geht es darum, wie man mit einem Blog auf eine neue Domain umzieht, aber...
Open the file (wp-config.php) in your editor and add following data:
define('WP_SITEURL', 'http://www.example.com');
define('WP_HOME', 'http://www.example.com/blog');
I suggest to this in every other blog too. You save a request to the database and it improves the performance of your installation.
Das nimmt man doch gerne mit [via].
Kommentare (12)
Sascha ¶
24. November 2008, 11:19 Uhr
Wie soll sich der Performancegewinn bemerkbar machen?
Bei meiner WP-Installation ist kein Unterschied festzustellen.
Markus ¶
24. November 2008, 11:22 Uhr
Tipp #2 gleich umgesetzt, danke :)
Micha ¶
24. November 2008, 11:24 Uhr
Hallo Peter,
zu Deiner ersten Funktion ist zu sagen, das get_permalink() jedesmal einen Datenbank-Request verursacht. Also bei LIMIT 5 = 5 Requests.
post_status = 'publish' würde ich nicht rausnehmen, der Status kann draft sein, was nicht nötig ist. Dann besser WHERE post_type IN('post', 'page') verwenden.
Peter ¶
24. November 2008, 11:31 Uhr
Zitat Micha:
Ups, das sollte da auch gar nicht stehen. Ich meinte eigentlich das
$wpdb->posts.post_type = 'post'
, habe es direkt korrigiert. Danke!Frank ¶
24. November 2008, 13:48 Uhr
Hallo Peter,
danke für den Link zu WP Engineer!
Die Performance lässt sich in vielen Bereichen auf diese Weise verbessern. WP holt alle Einträge dieser Form aus der DB - das macht es sehr flexibel, man muss bei Veränderungen nicht darüber nachdenken. Definiert man aber weitere Konstanten etc. in der config oder im Theme, dann sind die vielen kleinen MilliSekunden schon messbar.
Dominic ¶
24. November 2008, 17:31 Uhr
Der Peformancegewinn deines 2. Tipps bringt natürlich nicht so sehr viel, wenn man auch deinen 1. Tipp einsetzt: 1 Query gesparrt, 11 weitere hinzugefügt (1 Query für get_results + 1 Query pro Post für get_permalink). Mit einem guten Caching-Plugin ist das natürlich wieder ziemlich wurscht.
Dieter ¶
25. November 2008, 14:38 Uhr
Liebe Mitleser,
was habe ich gerade gelacht. Zwei Mal!
1. über den ersten Kommentar zu diesem Beitrag
2. über diesen Artikel in dem ich etwas über Performance Verbesserungen durch zwei Eintragungen in die wp-config.php einer Wordpress installation lese und darüber das sich der User @Sascha mokiert, er hätte keine Performance Steigerung feststellen können.
Herrlich!
Wer Performance Steigerungen erleben will, der sollte
1. schnellen php Code abliefern
2. die MySQL optimieren
3. einen Pentium III oder II Rechner bei ebay kaufen :) um die Performance Steigerung dann wirklich als EVENT zu erleben.
Merke: Einen Dual Core Rechner kann niemand damit beeindrucken - ausser wir hätten 1000 Zugriffe/Sekunde und das über Stunden.
In diesem Sinne, weiter so ...
-dieter
Sascha ¶
25. November 2008, 19:48 Uhr
@dieter:
Es ist schön das du Spaß hast. Und bitte verzeih das ich kein PHP-Guru bin.
Wenn mir jemand was von Performance-Steigerung erzählt, gehe ich erst einmal davon aus das diese auch "spürbar" ist. Da dies bei meiner WP-Installation nicht der Fall ist, finde ich hat mein Hinterfragen schon seine Berechtigung.
Es ist nur eine einfache Frage!
Wenn aber Fragen schon ein Problem (für dich) darstellen ...
Micha ¶
25. November 2008, 20:22 Uhr
@Sascha: Sicherlich ist der Gewinn nicht wirklich spürbar. Hast du aber dein Blog 1 Jahr laufen und 600000 Seitenaufrufe, hast du 1200000 Datenbankabfragen gespart. Ressourcen zu sparen, hat noch nie geschadet.
@Schlau-Dieter: Du kannst gerne die Datenbank deines WordPress Blogs optimieren, mal schauen, ob der Blog dann noch läuft...
Dieter ¶
25. November 2008, 22:46 Uhr
@Micha
Deine Zahlen pro Jahr stellen für heutige Prozessoren kein Problem dar. Es gibt aber Webseiten die haben das jeden Tag. Es gibt sogar Webseiten die haben das per Stunde! Dort wird aber völlig anders optimiert als mit zwei Eintragungen in einer Konfigurationsdatei.
Netter Witz!
@Sascha
Von php habe ich selber nur Grundkenntnisse. Hatte ich Dir Unfähigkeit oder einen gewissen Bildungsnotstand vorgeworfen oder irgend einen anderen Vorwurf gemacht?
Und
Wie ich daraus erlese hast Du mein Post nicht verstanden oder nicht zu Ende gelesen.
In diesem Sinne ... das Leben geht weiter ... auch meines.
Schlau-Dieter
Claudia ¶
10. Januar 2010, 14:15 Uhr
Das "n" am Ende des ersten Tipps ist überflüssig - setzt ein "n" beziehungslos zwischen die Listenpunkte. Habs bei mir einfach aus dem Code gelöscht und gut ist's!
Olli ¶
1. Juli 2010, 17:55 Uhr
Der Beitrag mag zwar schon etwas älter sein, funktioniert aber prima. Vielen Dank dafür.