Thesis-Hooks und selbstdefinierte Funktionen– ein Anwendungsbeispiel

22. Dezember 2008 · 3 comments

Was das WordPress-Framework Thesis ist und welche verschiedenen Layouts mit Thesis möglich sind, habe ich schon gezeigt. Deshalb will ich heute mal kurz erklären, wie man seinem Theme und damit seinem Weblog zusätzliche Funktionen hinzufügt. Da es hier nur darum geht, das Prinzip zu verdeutlichen, habe ich zur Einführung eine einfache Funktion ausgewählt: Ich möchte jedem Kommentar einen Link zum Löschen hinzufügen.

Ein Delete-Link im Frontend ist eine praktische Sache. Man muss sich nicht erst im Backend durch die Liste der Kommentare wühlen, wenn man einen Spam-Kommentar löschen will, sondern kann direkt dem Link beim Kommentar folgen. Es versteht sich von selbst, dass dieser Link nur für den eingeloggten Benutzer mit Administratorrechten sichtbar ist. Der normale Leser sieht ihn nicht.

Natürlich ging sowas bisher auch schon. Man musste sich die passende Template-Datei seines Themes suchen (meistens single.php), dort die richtige Stelle im Quelltext finden und seine PHP-Funktion genau dort einfügen, wo man sie haben wollte. Und wenn man sie nicht mehr haben wollte, musste man sie wiederfinden und löschen, denn die Funktion stand ja hardcodiert im Theme-Template.

Bei Thesis funktioniert das anders. Die mitgelieferten Thesis-Core-Dateien braucht man nicht anzufassen. Alle selbstgebauten Funktionen sind in einer einzigen Datei custom-functions.php zusammengefasst und können nach Bedarf zu- und abgeschaltet werden. Einfacher gehts kaum.

Aber zunächst mal der Quellcode der Funktion:

function delete_comment_link() {
  if (current_user_can('edit_post')) {
    global $post;
    $id =  get_comment_id();
    echo ' <span class=\"edit_comment\"><a href="'.admin_url("comment.php?action=cdc&c=$id&redirect_to=/".$post->post_name."/").'">[delete]</a></span> ';
  }
}

Was die Funktion beim Aufruf tut, ist leicht zu erkennen. Sie fragt ab, ob der Benutzer das Recht zum Editieren hat und schreibt, wenn das so ist, den Delete-Link in die HTML-Seite. Diese sehr einfache Funktion schreibt man sich jetzt per copy&paste in die Datei custom-functions.php, die im Ordner custom des Thesis-Themes liegt. An welche Stelle man sie dort einfügt, spielt keine Rolle. Hauptsache, man lässt die Struktur der Datei intakt. Der Einfachheit halber kann man sie ganz ans Ende setzen.

Wenn man dann die Datei per FTP auf den Server hochgeladen hat, hat man den ersten Schritt geschafft. Aber es passiert noch nichts. Man muss seinem Thesis erst noch sagen, an welcher Stelle genau die Funktion eingebunden und ausgeführt werden soll. Dazu bringt Thesis 31 zusätzliche Hooks mit. Das sind ganz bestimmte Stellen, man könnte auch sagen Anfasser, im Theme, die im Quelltext markiert sind und an die man beliebige zusätzliche Funktionalitäten einfügen kann. Eine Übersicht der Thesis-Hooks findet man im Handbuch.

Für unseren Fall hier habe ich mal den Hook thesis_hook_after_comment_meta ausgesucht, damit der delete-Link direkt neben den schon vorhanden Edit-Link kommt. Der Name des hooks erklärt gleich auch genau die Stelle, an der er sitzt: Innerhalb des Kommentarbereichs, unmittelbar nach den Kommentar-Meta-Informationen (also Datum, Autor usw.). Hat man mehrere Kommentare auf einer Seite, wird der Hook mehrfach gesetzt.

Wie bekommt man jetzt die Funktion angehängt? Man schreibt einfach die folgende Zeile in die schon bekannte Datei custom_functions.php, direkt unter die zugehörige Funktion:

add_action('thesis_hook_after_comment_meta', 'delete_comment_link');

Das Prinzip ist bei allen Funktionen gleich: der erste Parameter ist der Hook, der zweite der Funktionsname.

Lädt man jetzt die Datei wieder hoch und schaut sich seine Kommentare an, findet man bei jedem Kommentar an der oben definierten Stelle hinter den Meta-Informationen einen Delete-Link (evtl. muss man einen reload oder refresh machen).

Das Ergebnis

Das Ergebnis

So einfach ist das. Egal, ob man einen kleinen Link einfügt oder seine komplette Briefmarkensammlung oder ein Forum. Das Prinzip ist immer das selbe.

Thesis rockt! Get Thesis · Live Demo

{ 3 comments }

1 martinwaiss 22. Dezember 2008 um 13:19 Uhr

Wow, du bietest ja eine ganze Thesis-Akademie, das finde ich toll, so kann man sich bewusst und mit Übersicht für die passende Theme für das eigene Projekt entscheiden. Obendrauf kann man mit Thesis offensichtlich sogut wie alles mit minimalen Aufwand anstellen, herrlich!

Je mehr ich über Thesis bei dir lese, desto näher rückt das Redesign bei mir. Das neue Jahr werde ich wahrscheinlich schon im „neuen G’wand“ feiern…

Danke!

2 fdb 22. Dezember 2008 um 13:42 Uhr

…und ich hatte mich schon so gefreut, dass ich mal Arthemia in Aktion sehe. Über Thesis schreibe ich, weil das ein Topic ist, dass man noch nicht tausendmal und viel besser woanders findet.

3 martinwaiss 22. Dezember 2008 um 18:15 Uhr

Arthemia in Action wird’s sicher auch weiterhin bei mir zu sehen geben; ich sitze derzeit auf gut 80 Domains und hinter jeder versteckt sich ein Projekt, was ich entweder angefangen oder vorgeplant habe – falls es sich alles noch in diesem Leben ausgeht 😉

Also ich werde sicher für die feine Arthemia Gebrauch finden. Ich habe ebenfalls ein Abo bei ElegantThemes – weil ich auch einige Themes davon schon eingeplant habe und schliesslich habe ich auch das OverEasy Theme von WooThemes für ein Projekt reserviert…

Mein Blog ist aber mein Lieblingskind und das bekommt nur das beste, hehe 😉

Für mich zählt genauso wie für dich die Uniqueness, kombiniert mit sehr guter Informations Architektur und validem Code (was ich dann selbst durch „Anpassungen“ kaputt machen kann 😉 ) und möglichst breiten Anpassungsmöglichkeiten. Also sozusagen die Schokomilch-Wollsau …

Comments on this entry are closed.

Previous post:

Next post: