Unser Affiliate Theme ist da! Spare 10% mit dem Gutschein DRWP10 - mehr erfahren!

Twitter API 1.1 aus WordPress ansteuern

Wir haben vor kurzem in einem Snippet erklärt, wie man einfach und unkompliziert die letzen Tweets eines bestimmten Nutzers auslesen und in WordPress mit Hilfe der feed.php wiedergeben kann. Dies ging mit der API Version 1.0 auch wunderbar, doch Twitter die Funktion der API 1.0 eingestellt und die Version 1.1 herausgebracht. Daher erkläre ich euch heute, wie mit der API 1.1 ebenfalls Feeds innerhalb eurer WordPress Seite / Blog ausgeben könnte – auch diesmal natürlich wieder ohne Plugin. Im Vergleich zu dem ersten Beitrag ist dieser Weg hier jedoch etwas komplizierter.

Was hat sich bei der Version 1.1 geändert? So einiges! Es ist nun wesentlich „aufwendiger“ auf die Funktionen der API zugreifen zu können. Absofort ist eine Art Authentifizierung mit einmalige Keys notwendigt, der sogenannten „OAuth authorization“.

Ich möchte euch nun erklären, wie Ihr anhand der neuen API 1.1 die letzten Tweets eines bestimmten Nutzer ausgeben könnt, möglichst einfach.

Eine Twitter Applikation registrieren

Zunächst müsst Ihr euch eine Appilkation erstellen, über diese laufen später alle Anfragen. Öffnet hierzu die folgende URL und loggt euch mit eurem Twitter Account ein:

https://dev.twitter.com/apps/new

Eine Applikation bei Twitter registrieren

Eine Applikation bei Twitter registrieren

Nach erfolgreicher Registrierung einer neuen App werdet Ihr auch direkt in euer Dashboard weitergeleitet. Falls nicht, könnt ihr dieses über diese URL erreichen:

https://dev.twitter.com/apps (Klick auf die registrierte Applikation)

In der Übersicht seht Ihr nun eure OAuth-Daten sowie die Access Token. Diese Daten brauchen wir im nächsten Schritt.

OAuth-Daten

OAuth Daten sowie Access Token

Tweets mit WordPress auslesen

Nachdem wir erfolgreich eine Twitter Applikationen mit OAuth Daten sowie Access Token erstellt haben, können wir den letzten Teil, die Programmierung, angehen. Dank Abraham Williams ist das sogar ganz einfach. Er hat eine Library erstellt, welche die Authentifizierung bei Twitter für uns übernimmt. Wir müssen diese Library später nur mit einem kleinen WordPress Snippet ansteuern. Die Library findet Ihr bei Github unter der folgenden URL:

https://github.com/abraham/twitteroauth/tree/master/twitteroauth

Ladet euch die beiden Dateien herunter und legt Sie im Theme ab. Ich habe dafür folgende Struktur gewählt:

/wp-content/themes/THEMENAME/library/twitterapi/

Wie schon gesagt, brauchen wir noch ein klenes Snippet um die Library auch mit Daten zu füttern. Dazu öffnet bitte eure Functions.php (alternativ könnt Ihr auch Plugins wie „Codeschnipsel“ etc. verwenden) und fügt folgenden Code hinzu:

function ago($time){
   $periods = array("second", "minute", "hour", "day", "week", "month", "year");
   $lengths = array("60","60","24","7","4.35","12","10");

   $now = time();
   $difference = $now - $time;
   $tense = "ago";

   for($j = 0; $difference >= $lengths[$j] &amp;&amp; $j < count($lengths)-1; $j++) {
	   $difference /= $lengths&#91;$j&#93;;
   }

   $difference = round($difference);

   if($difference != 1) {
	   $periods&#91;$j&#93;.= "s";
   }

   return "$difference $periods&#91;$j&#93; ago ";
}

/**
 * Die letzten Beitrge anhang der neuen API ausgeben
 */
function display_latest_tweets($no_tweets){

	@require_once 'library/twitterapi/twitteroauth.php';

	 $twitterConnection = new TwitterOAuth(
		'CONSUMER_KEY',	// Consumer Key
		'CONSUMER_SECRET', // Consumer secret
		'ACCESS_TOKEN',	// Access token
		'ACCESS_SECRET'    // Access token secret
		);

	$twitterData = $twitterConnection->get(
		'statuses/user_timeline',
		  array(
			'screen_name'     => 'TWITTER_USERNAME', 	// Twitter Benutzername
			'count'           => $no_tweets, 		// Wieviele Tweets sollen angezeigt werden?
			'exclude_replies' => true
		  )
		);

		if($twitterData &amp;&amp; is_array($twitterData)) {
		?>
            <div id="tweets_list">
                <ul>
                    <?php foreach($twitterData as $tweet): ?>
                    <li>
                        <span>
                        <?php
                        $latestTweet = $tweet->text;
                        $latestTweet = preg_replace('/http://([a-z0-9_.-+&amp;!#~/,]+)/i', '<a href="http://$1" target="_blank">http://$1</a>', $latestTweet);
			echo $latestTweet;
                        ?>
                        </span>
                        <?php
                        $twitterTime = strtotime($tweet->created_at);
                        $timeAgo = ago($twitterTime);
                        ?>
                        <div class="meta"><a href="http://twitter.com/<?php echo $tweet->user->screen_name; ?>/statuses/<?php echo $tweet->id_str; ?>" class="jtwt_date"><?php echo $timeAgo; ?></a></div>
                    </li>
                    <?php endforeach; ?>
                </ul>
            </div>
	<?php
	}
}
&#91;/code&#93;

Es gibt einige wichtige Variablen die unbedingt angepasst werden mssen:

&#91;code type="php"&#93;@require_once 'library/twitterapi/twitteroauth.php';&#91;/code&#93;

Hier muss der Pfad zur zuvor heruntergeladenen twitteroauth.php von Abraham Williams stehen. Solltet Ihr das Snippet in der functions.php platzieren und die Library so wie ich in <strong>library/twitterapi/ </strong>dann knnt Ihr diesen Pfad bernehmen.

[code type="php"]
'CONSUMER_KEY',	// Consumer Key
'CONSUMER_SECRET', // Consumer secret
'ACCESS_TOKEN',	// Access token
'ACCESS_SECRET'    // Access token secret

Diese Felder einfach mit euren Daten aus der Twitter Applikation füllen. Zuletzt noch

'screen_name' => 'TWITTER_USERNAME',

mit dem gewünschten Twitter Benutzername bestücken.

Ausgabe in WordPress

Dank des kleines Snippets ist die Ausgabe ganz einfach. EInfach an der gewünschten Stelle im Theme die folgende Funktion aufrufen:

echo display_latest_tweets(5);

Ihr könnt die Anzahl der gewünschten Tweets einfach mit übergeben, in dem Fall die 5 letzten Tweets.

Die Ausgabe (aktuell ul>li) könnt Ihr im Snippet an eure Bedürfnisse anpassen.

Gibt es eine Alternative hierzu?

Im Blog von Naden stellt er ein kleines Widget vor, mit welchem man ohne Serverseitige Performance die letzten Tweets darstellen kann. Er bietet sogar einen kleinen Generator an. Schaut euch das Widget mal an!

Twitter-Widget erstellen

Twitter-Widget erstellen

Fazit

Die Twitter API 1.1 bedarf zwar mehr Code zum ansteuern als die alte Version 1.0 aber es ist auch deutlich mehr Möglich. Mit diesem kleinen Snippet sollte jeder zurecht kommen - ihr könnt das Snippet auf Basis der Library auch mit allen Möglichen Funktionen der API 1.1 erweitern - schaut euch dazu einfach die Documentation der API 1.1 an.

Über Christian

Die Webentwicklung ist seit 2006 ein großer Teil meines Lebens und seit 2010 kann ich damit auch meine Brötchen verdienen. Ich beschäftige mich speziell mit WordPress und entwickle auch eigene Themes. Die Anpassungsfähigkeit von Wordpress begeistert mich immer wieder, daher möchte ich euch interessante Snippets und Plugins nicht vorenthalten.

WordPress Affiliate ThemeAnzeige

3 Kommentare

Avatar von Bernd

Bernd 20. November 2014 um 20:43

Anleitungen sind prima! Dumm nur, wenn die Hälfte fehlt. Aber der große Meister schweigt sich aus.

Antworten
Avatar von André

André 20. November 2014 um 20:46

Was fehlt dir denn? Zu der Zeit als wir den Artikel verfasst haben, konnten damit die meisten etwas anfangen. ;)

Antworten
Avatar von Bernd

Bernd 21. November 2014 um 0:35

Da ist der Meister und auch das obere Bild :D

Also dann mal Schritt für Schritt :D
1.) Bei Settings bleiben Callback URL und Allow this application to be used to Sign in with Twitter deaktiviert?
2.) Bei Permissions ist Read, Write and Access direct messages aktiviert?

Antworten

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <strong>, <em>, <u>, <a href="">, <del>, <ul>, <ol>, <blockquote>. Für Code benutze bitte pastebin.com und kopiere den Link in dein Kommentar.
*
*