Früher war alles besser, denn da konnte man einen Tweet-This-Link ganz einfach bauen, indem man auf http://twitter.com/home?
verlinkte. Wer darauf kickte (und bei Twitter eingeloggt war), wurde auf seine Home-Seite bei Twitter weitergeleitet und der Text „Lese gerade: <url>“ stand bereit zum Absenden im Textfeld. Seit kurzem wird aber dieser Methode die URL, sofern sie ein Gleichheitszeichen enthält, an dieser Stelle abgeschnitten und ist nicht mehr zu gebrauchen. Die Lösung für dieses Problem zwitscherte mir vor ein paar Tagen @amauf: einfach auf http://twitter.com/share?
verlinken.
Das ist (glaube ich) genau jene URL, die auch der Standard-Tweetbutton nutzt und entsprechend wird, wenn man diesen Link verwendet, auch Twitters eigener URL-Shortener t.co zum kürzen der verlinkten Adresse verwendet. Dieser hat einen eingebauten Phishing-Schutz, ist aber ansonsten genau so gut wie jeder andere Kurz-URL-Dienst. Seitdem die URLs bei Gleichheitszeichen abgeschnitten werden und Twitter seinen eigenen URL-Shortener sportet, ist natürlich mein alter Post über Tweet-This-Links mit blogeigenen Shoturls für WordPress veraltet, da man jetzt ja weder die blogeigenen Shorturls braucht noch der ausgegebene Link der richtige ist. Korrigiert könnte das Ganze dann so aussehen:
/*
* Tweet-This-Link
*/
if(!function_exists('get_tweet_this_link')){
function get_tweet_this_link($message_template = 'Lese gerade: %TITLE', $link_title='Twittern', $title_length = 80){
global $post;
// Titel des Artikels kürzen
$title = $post->post_title;
if(strlen($title) > $title_length){
$short_title = mb_substr($title, 0, $title_length);
$short_title .= '...';
}
else{
$short_title = $title;
}
// Titel und URL codieren
$message = urlencode(str_replace('%TITLE', $short_title, $message_template));
$url = urlencode(get_permalink($post->ID));
// Fertig ist der Link!
return '<a href="http://twitter.com/share?text='.$message.'&url='.$url.'">'.$link_title.'</a>';
}
}
Warum nicht den Standard-Twitter-Button verwenden statt der Marke Eigenbau? Ganz einfach: Widgets machen Websites langsam und wann immer man sich das Laden von externen Ressourcen sparen kann, sollte man das tun. Die Performance der eigenen Website ist wichtiger als die CI von Twitter. Außerdem haben keine zwei Widgets von verschiedenen Diensten die gleichen Maße und sehen in Kombination entsprechend unschön aus. Kann mal bitte irgendwer dafür eine Spezifikation schreiben, inklusive Performance-Richtlinien? Irgendwann hat sich das Internet doch auch auf Formate für Werbebanner und 88×31-Buttons geeinigt – warum geht das nicht auch bei Web2.0-Widgets?
Kommentare (9)
Martin Schneyra ¶
25. Oktober 2010, 10:42 Uhr
Ich danke dir für diese Anleitung. Es wird wirklich Zeit, dass man sich mal auf eine gemeinsame Größe einigt. Ich positioniere mir bei jedem neuen Projekt erst mal einen an den Buttons ab.
Andreas Mauf, @amauf ¶
25. Oktober 2010, 10:58 Uhr
Prima. Das Kürzen klappt jetzt auch korrekt bei Umlauten.
Ich bevorzuge ebenfalls einen herkömmlichen Link gegenüber einem fremden Widget. Auf die Anzahl der "likes" oder "shares" muss man dann jedoch verzichten. Genau wie auf das Übersenden diverser Trackingdaten an das jeweilige Social Network.
Der Twitter-Button im Gegensatz zum Facebook-Pendant scheint deutlich besser umgesetzt, was die Optik angeht. Der Facebook-Button sieht öfter mal anders aus und ist daher unberechenbarer.
Dennis Morhardt ¶
25. Oktober 2010, 15:31 Uhr
Mache ich auf bp-tutorials.de ähnlich, nur dass ich zusätzlich noch die Counter (also wie oft wurde ein Link getwittert bzw. geshared) von Facebook & Twitter hole.
Für Twitter (liefert JSON): http://urls.api.twitter.com/1/urls/count.json?url=http://die-url
Für Facebook (liefert XML): http://api.facebook.com/restserver.php?return=json&method=links.getStats&urls=http://die-url
Die Werte werden für jeden Beitrag für 5 Minuten (dank der in WordPress eingebauten Transients API) zwischengespeichert.
macx ¶
26. Oktober 2010, 09:45 Uhr
Wertvolle WordPress-Tipps von Dennis! Vielen Dank dafür. Hab mir das gleich mal zur Gemüte getan.
Andreas Mauf, @amauf ¶
27. Oktober 2010, 09:48 Uhr
Danke Dennis Morhardt. Gibt es denn auch einen Link zum "liken", wenn man den iframe-Button nicht verwenden möchte?
Peter ¶
27. Oktober 2010, 14:09 Uhr
Zitat Andreas Mauf, @amauf:
Der Bock hier war im übrigen nicht die falsche Reihenfolge von Urlencoding und Kürzen, sondern die Unfähigkeit von PHPs Standard-Funktionen in Sachen Unicode. Dreckstool :)
Andreas Mauf, @amauf ¶
27. Oktober 2010, 16:04 Uhr
Zitat Peter:
Deswegen mb_substr()? Aber müsste man dann nicht auch mb_strlen() verwenden statt strlen()?
Peter ¶
27. Oktober 2010, 16:12 Uhr
Stimmt, das wäre richtiger. Andererseits, das Kürzen des Titels ist eh nur eine Pi-mal-Daumen-Operation... geht auch so.
Dieter ¶
12. Juni 2011, 06:47 Uhr
Danke für den Code für diesen Tweet-This-Link.
Ich probierte ihn aus, nachdem der Code für den Tweet-This-Link mit blogeigenen Shoturls für WordPress leider nicht mir funktionierte. Leider ist der neue Code nicht mehr XHTML 1.0 valide. :-(
Ungern möchte ich auf den Twitter-Button von Topsy ausweichen müssen, der mit JavaScript realisiert ist. Daher meine Frage, ob es noch die Möglichkeit für einen Tweet-This-Link gibt, der valide ist, oder ist das nun durch die Umstellung von Twitter unmöglich geworden?