Dem getreuen Leser mag es schon aufgefallen sein:
Ich mag die Semmelstatz – auch wenn es das wunderbare Plugin nicht mehr zum Download gibt…

Ich kann es nicht genug loben (auch wenn Tanja mich dafür verflucht… :p ), aber für den schnellen Überblick der tagtäglichen Besuchermassen ist es einfach perfekt! Besonders nachdem ich die Boterkennung deutlich verbessert habe liegen die Werte nahe an Google Analytics. Und wenn letzteres in naher Zukunft von Internetausdruckern verboten wird, freue ich mich umso mehr um die Statistik, die ich (fast) seit Beginn meiner WordPress-Zeit verwende.

Aber das ist nicht wirklich das Thema dieser Artikels – sondern die Erweiterung der Artikelübersicht im WordPress-Backend mit einer eigenen Spalte:

Semmelstatz bietet sich hierfür allerdings förmlich an, denn das Plugin schreibt die Visits eines Artikels direkt in die wp_posts Tabelle weg – somit also perfekt um sich einen Überblick zu verschaffen, wie die (neuen) Artikel so ankommen!

Wie geht das ganze? Mit drei simplen WP-Hooks und Codeschnipseln, die man in die functions.php des eigenen Themes packt (oder direkt in die Plugin-Datei…)! Zum nachbauen hier Schritt für Schritt:

  1. Wir sagen WordPress, dass wir zukünftig eine neue Spalte in der Artikelübersicht haben. Von Haus aus gibt es dazu den Filter-Hook manage_posts_column
  2. Wir füllen die neue Spalte mit Inhalt, der Action-Hook manage_posts_custom_column kommt zum Einsatz
  3. Wir machen das ganze schön und passen das CSS des Backends an

Die unter 1) genannte Funktion macht eigentlich nicht sonderlich viel mehr, als dem Kind einen Namen zu geben:

add_filter('manage_posts_columns', 'semmel_columns');
function semmel_columns($columns) {
$columns['views'] = 'MeinSpaltenname';
return $columns;
}

MeinSpaltenname ist somit der neue Name der Spalte – logisch, oder :-)

Zweiter Schritt – wir erzählen WordPress, wie bzw. mit was die neue Spalte befüllt werden soll. Wir wissen, dass Semmelsatz in der wp_posts Tabelle ein Feld “hits” mit Inhalt füllt. Also auslesen – ausgeben:

add_action('manage_posts_custom_column',
'semmel_show_columns', 10, 2 );
function semmel_show_columns($name) {
global $post;
switch ($name) {
case 'views':
$views = get_post($post->ID, ARRAY_A);
$semmelviews = $views['hits'];
echo $semmelviews;
}
}

Jetzt haben wir nur noch ein Problem:
Die neue Spalte, die schon jetzt in der Artikelübersicht angezeigt wird, wird ziemlich hässlich aussehen – das die Breite in keiner Relation zum Rest steht. WordPress ist da leicht seltsam… Also hilft nur eins – wir müssen mit CSS das ganze geraderücken!

Man könnte natürlich die bestehende CSS-Datei des Admin-Bereichs anpassen, oder eine neue eigenen CSS-Datei erstellen und einbinden. Wenn man aber nur eine Mini-Zeile CSS hat, ist das ganze vielleicht irgendwie… oversized?! Also schreiben wir den neuen Style – die Breite der Spalte – einfach direkt in den Quelltext rein, auch mit einer einfachen Funktion:

function custom_semmelcols_css() {
?>
<style type="text/css">
.column-views{width: 5em;}
</style>
<?php
}
add_action('admin_head', 'custom_semmelcols_css');

Erklärung: Die zusätzliche Spalte wird von Haus aus mit der Stylesheet-Bezeichnung “column-” + “Name-der-neuen-Spalte” versehen, in der obersten Funktion haben wir “views” gewählt… Klar soweit? Viel Spaß… :-)

[inspired by deluxeblogtips]