Shortlinks mit WordPress

Nachdem ich gestern mal wieder auf das Thema Shortlinks gestoßen bin und außerdem gerade an einem neuen Fotoblog bastle, habe ich mich auf die Suche nach der perfekten Lösung für WordPress gemacht. Update: Ich bin auch fündig geworden. Runterscrollen oder gleich: Klick.

Zur Erläuterung: Es gibt viele Gründe, einen kurzen Link auf seine Beiträge setzen zu wollen. Lange Links wie http://beispiel.com/blog/2009/06/21/beispiel sind zwar schön für Google, werden aber von Twitter gekürzt (30 Zeichen Limit für Links) und “verschwinden” damit hinter der Maske von tinyurl&Co.. Außerdem lassen sie sich teilweise schwierig per Mail oder Chat schicken, mal ganz abgesehen von gedruckter und mündlicher Weitergabe.
(Und warum der Beitrag darüber? Ich suche jetzt seit 2 Tagen und komme nur noch durcheinander, deswegen schreibe ich jetzt alles strukturiert auf, vielleicht bringt es ja jemanden was. Also mindestens mir, ich bin gespannt ob ich am Ende des Artikels eine Lösung habe.)

Meine Ansprüche an die Umsetzung mit WordPress sind:

  • Für jeden Beitrag steht automatisch ein Shortlink bereit. (Format: http://beispiel.com/1234)
  • Der Shortlink leitet per 301 weiter auf den eigentlichen Link.
  • Der Shortlink kann in das Theme eingebunden werden. (Damit ihn auch jemand sieht)
  • Der Shortlink kann in den Header (HTML und HTTP) eingebunden werden. (Damit Maschinen und Bookmarklets ihn sehen)
  • Wichtig: Es wird kein extra Feld in der Datenbank angelegt, nur um die Abkürungen zu speichern. Jeder Post hat schon eine ID.

Ein kurzer Blick in das WordPress-Plugin-Verzeichnis zeigt, das es inzwischen eine handvoll Plugins gibt, die sich der Generierung von Shortlinks verschrieben haben. “Zum Glück” sind meine Anschsprüche anscheinend sehr hochgegriffen, die meisten Lösungen fallen heraus bzw. verfolgen einen ganz anderen Ansatz (und das machen sie dann z.T. auch ganz gut).

Basteln: Meine erste Lösung

Läuft außer der Reihe, weil es eine Spezial-Lösung ist, die nur funktioniert wenn man glücklicherweise das URL-Schema http://beispiel.com/1234/artikel benutzt. Das ist bei meiner ersten Testseite der Fall und so funktioniert die Minimalvariante schon jetzt:
http://mjusique.com/141/appreciation-and-addiction erreicht den gleichen Beitrag wie
http://mjusique.com/141.

Erzeugt wird der Shortlink inklusive Hinweis direkt im Theme (und ersetzt den Trackback-Link):
<a  rel="shortlink" href="<?php bloginfo('url'); echo('/'); the_ID(); ?>"
title="Copy the short URL to this entry."></a>

Fazit: Zählt nicht, funktioniert aber erstmal. Aber: Natürlich kein echter Redirect und kein Link im Header (logisch, the_ID(); geht auch nur im Loop).

Basteln: Toscho-Lösung

Ebenfalls in dem schon erwähnten Beitrag verlinkt ist eine sehr slicke Lösung von toscho.de, die im Grunde die saubere Umsetzung meines ersten (eher russischen) Ansatzes ist. Einfach ein bisschen Script in die funktions.php und alles funktioniert fast wie gewüscht. Aber das Format ist eben leider http://beispiel.com/?p=1234 und das sieht im Zweifel aus wie kaputt.

Fazit: Schade, eigentlich fast genau das was ich suche. Und man könnte auch ein Plugin draus machen. Vielleicht versuche ich das, je nachdem was ich noch finde.

Plugin: Short Link (1.0)

Mein erster Testkandidat (von Herrn Häussner empfohlen). Einmal installiert und aktiviert, fügt das das Plugin brav den Link in den Header. Und er ist in dem gewünschten. Ruft man ihn allerdings auf, kommt eine “Nicht gefunden”-Fehlermeldung. Eine Optionsseite, mit dieser sich das Problem vielleicht lösen ließe, gibt es leider nicht.
Fazit: Zur Zeit nicht geeignet, aber die Hälfte des Weges erreicht.

Plugin: RevCanonical (1.2.3)

Bietet die gleiche Funktionalität wie Shortlink, aber zusätzlich noch eine Konfigurationsseite, auf der sowohl die Basis des Shortlinks ausgewählt werden kann als auch das Format des Header-Tags. Dafür wird anscheinend kein HTTP-Header erzeugt. Die erzeugte Abkürzung scheint die ID, gewandelt in eine Zeichenkette zu sein (andernfalls könnte man es wahrscheinlich auch einstellen und man bräuchte ein Feld in der Datenbank). Leider kommt es aber auch zum gleichen Problem wie bei Shortlink, der eingefügt kann nicht erreicht werden.
Fazit: Wie Shortlink, zur Zeit nicht geeignet, aber die Hälfte des Weges erreicht.

Plugin: ShortURL (0.3)

(Vorerst nicht getestet, weil das Format fest auf http://beispiel.com/-1234 gestellt ist. Vielleicht komme ich später darauf zurück.)

Plugin: Twitter Friendly Links (1.0)

Der Gewinner! 100 von 100 Punkte. Besser kann man das gerade nicht umsetzen, aber ich bin erst ganz Schluß darüber gestolpert. Alle meine Ansprüche werden (über-)erfüllt:

  • Für jeden Beitrag steht automatisch ein Shortlink bereit. (Format: http://beispiel.com/1234)
    • Das Format kann außerdem noch eingestellt werden.
  • Der Shortlink leitet per 301 weiter auf den eigentlichen Link.
    • Je nach Bedarf auch per 302, kann auch eingestellt werden.
  • Der Shortlink kann in das Theme eingebunden werden. (Damit ihn auch jemand sieht)
    • Die funktion twitter_link() macht genau das.
  • Der Shortlink kann in den Header eingebunden werden.
    • Wahlweise als rel=”shortlink” in HTML und HTTP oder rev=”canonical” oder alles zusammen.
  • Es wird die ID des Post benutzt.

Wer das jetzt nicht glauben kann:
http://eigenartig.es/wissenswertes/manifest-digital-performance-bauhaus/792/ ist auch erreichbar unter:
http://eigenartig.es/792/
Fazit: Yay! Danke nach Moskau an Konstantin.

Andere

Der Vollständigkeit halber: Es gibt auch noch mehr Plugins, wie z.B. Pretty Link oder Le petit URL, aber diese funktionieren wie ein klassischer Service, nur im eigenen WordPress. Man kann also auf Wunsch für jeden Beitrag eine URL erstellen. Wer das möchte, sollte sich die beiden Plugins mal anschauen, aber an meinem Anwendungsbereich gehen beide vorbei.



About this entry