Gestern habe ich mich um eine voll geile Lösung für meine Kommentare gekümmert. Auslöser war, dass ich aufgrund Serverumzug (der hing ja irgendwie komplett) und der nachfolgenden Änderungen (verschiedene Cache Lösungen, manuelle Lösung für das nofollow case by case Plugin) total den Überblick verloren habe und die durchschnittlichen Ladezeiten in den Webmaster Tools aktuell nichts gutes verheißen.
Also musste ich mich dazu entschließen sämtliche in letzter Zeit durchgeführten Änderungen erst mal wieder vorübergehend zu deaktivieren, um zu sehen, ob es an diesen Änderungen lag, oder ich hier einen anderen Performancekiller beschäftigt habe (worauf ich auch tippe, denn die Änderungen sollten sich ja eigentlich positiv auswirken).
Da es mehrere Änderungen waren, würde es auch schwer fallen zu sagen, was es genau sein könnte. Sicher habe ich da so meine Vermutungen, aber ‚nix ist gewiss’ wie man so schön sagt. So habe ich nun den ‚Urzustand’ von vor ein paar Wochen wieder hergestellt und damit fiel auch meine schöne Count Lösung für nofollows flach, an die ich mich so richtig schön gewöhnt hatte in letzter Zeit.
Ist einfach und praktisch, wenn automatisch die ersten 5 Kommentare der Kommentatoren auf nofollow gesetzt werden und danach automatisch alles auf dofollow wechselt. Kein durchwühlen der Datenbank (was ich alle paar Wochen immer mal wieder machte) mehr, keine großes Hin- und Herüberlegen bei den Kommentaren etc.
Also musste schnell wieder ein Count der Kommentatoren her. Denn hinter der Idee, dass man sich einen dofollow Link erst mal ‘verdienen’ muss, stehe ich immer noch voll und ganz. Der Kommentar Count ist ja ganz einfach über eine Funktion in der functions.php zu lösen:
//Count Kommentare Admin
function comment_counter_admin() {
if (is_admin()) {
global $wpdb, $comment;
$cca_commentID = $_GET['commentID'];
$cca_comment = get_comment($cca_commentID);
$cca_comment_type = get_comment_type();
$cca_author = $cca_comment->comment_author;
$cca_comment_url = get_comment_author_url();
if ( $cca_comment_type == 'comment' && ( !empty($cca_comment_url) || $cca_author == "admin" ) ) {
$queryString="SELECT COUNT(*) as comments FROM ".$wpdb->comments." WHERE comment_author_url='".$wpdb->escape($comment->comment_author_url)."'";
$comments_count = $wpdb->get_var($queryString);
$comments_count = "</strong> ($comments_count)<strong>";
return $cca_author.$comments_count;
} else {
return $cca_author;
}
}
}
}
Irgendwo muss der Count nun auch ausgeben werden und das Frontend kommt dafür so gar nicht in Frage. Denn ein Kommentar Count bedeutet eine Datenbankabfrage pro Kommentar und das hat bei der Anzahl meiner Kommentare enorme Auswirkungen auf die Performance. Also ins Backend, am Besten direkt im Kommentarbereich hinter dem Autor Namen.
Leider ist dazu ein Core-Eingriff notwendig, ich habe keine andere Lösung (es geht mit Sicherheit auch über eine Funktion mit Hook oder so) gefunden. Falls also einer von Euch eine Idee hat, wie ich das ohne Core-Eingriff lösen könnte, bitte rüber damit. Beim Core-Eingriff hängen wir ja bei jedem Update immer wieder vor dem gleichen Schlamassel, d.h. wir müssen uns unsere Core-Eingriffe notieren und nach jedem Update wieder durchführen.
Für meine Lösung habe ich die Datei templates.php (wp-admin/includes/) ‚vergewaltigt’ Die Zeile 2231, die im Original so aussieht:
echo "<td $attributes><strong>"; comment_author(); echo '</strong><br />';
habe ich mit dieser Zeile ersetzt:
echo "<td $attributes><strong>"; comment_author(); echo '</strong> ('; comment_counter_admin(); echo ')<br />';
Update: Weiter geht’s in der functions.php direkt unterhalb des oben genannten Codes mit folgendem Code:
if ( is_admin() ) {
add_filter('comment_author', 'comment_counter_admin');
}
Nun habe ich hinter dem Namen des Autoren im Admin Kommentarbereich schön stehen: (x), wobei das x für die Zahl der Kommentare steht, welche mit dieser URL abgegeben wurden
Wer selbst nicht den Namen “admin” benutzt, der sollte im ersten Codeschnipsel das Word “admin” mit seinem entsprechenden Namen ersetzen (bei $cca_author == “admin” ), so dass auch seine Kommentare gezählt werden.
Update: Als Plugin gibt es das Ganze jetzt auch hier Plugin Comment Count Admin.
@Tanja,
So viel Fleiß wie du am Tage bringst hätte ich leider nicht. Ich bin froh wenn ein Blog funktioniert
Ohne Coreeingriff fällt mir auch keine Lösung ein, jedoch finde ich die Funktion extrem klasse und würde, dein Einverständnis vorrausgesetzt, dies auch gern in meinen Blog einbauen
.
Also wirklich, ich bin auch froh wenn bei mir alles einfach nur mal funktioniert. Aber die Lösung finde ich auch richtig gut!
@Peter: Na, mir blieb nix anderes übrig, als das mal wieder durchzuziehen (alles wieder vorübergehend deaktivieren), sonst komme ich dem Performancefresser hier ja nie auf die Schliche. Und dann gibt es halt so Funktionen, die ich gerne hätte, da muss ich dann schon Hand anlegen (bin etwas ehrgeizig)
@Marcel: Heute Morgen nach dem ersten Einloggen mit dem Blick in die Kommentare rutschte mir echt raus ‘voll geil’. Ich bin so begeistert davon, dass ich gleich drüber schreiben müsste. Klar kannst Du das einbauen, die Anleitung steht ja im Artikel. Freut mich, dass ich mit meiner Begeisterung dafür nicht alleine dastehe
@Ringo: Ich hatte schon auch genug ‘funzt net’ in letzter Zeit, aber nichtsdestotrotz bin ich immer noch extrem experimentierfreudig *lacht*. Und dann kommt es halt auch wie es kommen muss, dass ich hinterher (wie gerade jetzt) mal wieder einsehen muss… das war zuviel… und dann wieder alles rückgängig, ein paar Wochen warten und wieder von vorne, aber dann langsam…;-)
Hihi… da musst Du dich aber wirklich schon sehr freuen, dass Du im Titel “voll geil” verwendest
)
Bei mir ist zwar alles follow, aber die Idee gefällt mir. Ich habe mal ein Plugin gesehen, dass diese Kommentaransicht um Spalten erweitert hat. Da schaue ich mal, wie das läuft…
(Damit man nicht die Core anpacken muss)
@Marc: Ja, ich freue mich riesig, denn damit fällt die manuelle Arbeit des Datenbank durchwühlens und zählens weg
Wäre cool wenn Du was findest, Core-Änderung ist ja nicht gerade das gelbe vom Ei, aber immer noch besser als nix…
Geniale Idee und gelungene Umsetzung Crazy Girl.
Ich kommentiere mittlerweile nur Dinge die mir richtig gut gefallen und das hier ist spitzenmäßig.
Erstelle doch ein Plugin und wir promoten es für dich.
@Paul: Danke
Hm… ein Plugin… hab ich noch nie gemacht, müsste bzw. könnte ich ja mal versuchen. Doch bei diesem hier wird es nicht gehen, so lange ich mit einem Core Eingriff arbeiten muss. Es geht sicherlich auch anders, aber mangels Programmierkenntnisse weiß ich leider nicht wie
Klasse Sache. Ich bin auch der Meinung von Paul, dass du mal ein Plugin erstellen solltest. Ich werde bei dem Codeschnipsel mit den letzten Kommentaren, denn du auch mal veröffentlich hattest ständig gefragt, welches Plugin ich da benutze und jedesmal muss ich die Leute enttäsuchen. Das Plugin würde sicherlich großen Anklang finden und du hättest auch noch einen kostenlosen BL.
Viele Grüße
Thomas
@Thomas: Nun gut, so habe ich eben etwas herumgetüftelt und schon mal mein erstes Plugin geschrieben (siehe neuester Beitrag Plugin Disable Wordpress Updates.
Da hätte ich nun schon mal ein Problem weniger, ich weiß jetzt zumindest, wie man ein Plugin schreibt. Heute schon wieder was dazu gelernt
Trotzdem geht es bei dieser Lösung hier erst mal nicht, solange niemanden etwas einfällt, wie man den Core-Eingriff umgehen kann. Ziemlich doof… aber ich habe bei meinen etlichen Recherchen im Netz dazu leider auch nichts gefunden *grummel* und meine Programmierkenntnisse lassen irgendwie auch zu wünschen übrig
@all: Denn Kommentar Count im Adminbereich gibt es jetzt auch als Plugin Plugin Comment Count Admin.
Ich hoffe, dass ich allen, die an dem Kommentar Count gefallen finden und eher ein Plugin als Lösung bevorzugen, eine kleine Freude damit machen kann.
Hey Tanja,
ich habs jetzt nicht getestet – aber wenn es arbeitet (werds die Wochen mal testen) spitze.
Wir hatten nen ähnliches Plugin mal im Einsatz – aber das hat (wie Du schon sachtes – je Kommentar mind. 1 DB Query) den Rahmen gesprengt .. war tödlich .. also einfach jeden auf Follow gesetzt .. ^^
Ciao Seba
@Seba: Das Ganze gibt es jetzt auch als Plugin