Letzte Trackbacks in der Sidebar anzeigen


Der Artikel besteht aus 858 Wörtern. Geschätzte Lesezeit: 03:25 Minuten

Findet der Leser eines Blogs einen Artikel vor, den er für empfehlenswert hält oder als mögliche weitergehende Lektüre hinsichtlich einer bestimmten Fragestellung oder Sachlage für von Nutzen erachtet, so verlinkt er sie in eigenen Artikeln - sofern er selber einen Blog hat.

Diese Verlinkung im fremden Blog gelangt als sogenannter Trackback wieder zur ursprünglichen Quelle zurück. Viele Blogger zeigen diese Trackbacks in ihrer Sidebar an, schließlich kann man damit dem fremden Blogger einerseits seinen Dank zollen. Andererseits sind diese Trackbacks auch durchaus ein Zeichen dafür, das der eigene Content von dem einen oder anderen als durchaus lesenswert empfunden wird.

Auch ich zeige schon länger die letzten 5 Trackbacks in der Sidebar an. Umgesetzt hatte ich das bislang mit dem folgenden Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function trackbacks_ausgabe() {
	global $wpdb;
	$track_query="SELECT comment_author, comment_author_url, SUBSTRING(comment_content,1,75) AS com_excerpt, comment_date, DATE_FORMAT(comment_date, '%d.%m.%Y %H:%i:%s') AS comment_date_ger FROM $wpdb->comments
		WHERE comment_approved='1'
		AND comment_type IN('trackback', 'pingback')
		AND comment_author_url NOT LIKE 'https://themenfreund.de%'
		AND comment_author_url NOT LIKE 'http://twitter.com%'
		GROUP BY comment_author_url
		Order by comment_date DESC
		LIMIT 5";
	$track_result = $wpdb->get_results($track_query);
	echo '<ul>';
	foreach ($track_result as $comment) :
		$tbCont = $comment->com_excerpt;
		$tbCont = strip_tags ($tbCont);
		$tbCont = str_ireplace("[...] ", " ", $tbCont);
		echo '<li style="list-style-type:none"><a href="'.$comment->comment_author_url.'" target="_blank">'.$comment->comment_author.'</a><br /> '.$comment->comment_date_ger.'<br />...'.$tbCont.'...</li>';
	endforeach;
	echo '</ul>';
}

Dem geübten Programmierer(n) wird gleich auffallen, das was wichtiges fehlt. Denn mit diesem Code werden auch Trackbacks angezeigt, die schon x Wochen respektive x Monate alt sind. Mich hat diese Tatsache durchaus gestört. Denn irgendwie finde ich es schon ein wenig - sagen wir - peinlich, wenn man solche 'veralteten' Rückmeldungen anzeigt / anzeigen lässt. Heißt es auf der anderen Seite doch, das der aktuellere Content anscheinend nicht dazu angetan ist, auf anderen Blogs verlinkt zu werden.

Also habe ich ein wenig am Code gebastelt. Zur Hilfe genommen habe ich mir dabei den Code, mit dem ich die zuletzt aktualisierten Artikel in der Sidebar anzeigen lasse.

Denn dort werden nur Artikel angezeigt, die zwei Bedingungen erfüllen müssen: Sie müssen bei der Aktualisierung mindestens 5 Tage alt sein, und die Aktualisierung darf höchstens 2 Monate zurückliegen. Das habe ich im oben gezeigten Code entsprechend angepasst eingebaut. Das Ergebnis sieht nun so aus:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function trackbacks_ausgabe() {
	global $wpdb;
	$track_query="SELECT comment_author, comment_author_url, SUBSTRING(comment_content,1,75) AS com_excerpt, comment_date, DATE_FORMAT(comment_date, '%d.%m.%Y') AS comment_date_ger FROM $wpdb->comments
		WHERE comment_approved='1'
		AND comment_type IN('trackback', 'pingback')
		AND comment_author_url NOT LIKE 'https://themenfreund.de%'
		AND comment_author_url NOT LIKE 'http://twitter.com%'
		AND comment_date >= CURDATE() - INTERVAL 2 MONTH
		GROUP BY comment_author_url
		Order by comment_date DESC
		LIMIT 5";
	$track_result = $wpdb->get_results($track_query);
	if ( empty($track_result) ) {
	echo '<small>... keine aktuellen Trackbacks</small>';
	}
	foreach ($track_result as $comment) :
		$tbCont = $comment->com_excerpt;
		$tbCont = strip_tags ($tbCont);
		$tbCont = str_ireplace("[...] ", " ", $tbCont);
		echo '<ul>';
		echo '<li style="list-style-type:none">'.$comment->comment_date_ger.'<br /><a href="'.$comment->comment_author_url.'" target="_blank">'.$comment->comment_author.'</a><br />...'.$tbCont.'...</li>';
		echo '</ul>';
	endforeach;		
}

Eine kurze Erklärung des Codes:

Zeile 1: Benennung der Funktion
Zeile 2: Die globale WordPress-Datenbank wird angesprochen
Zeile 3: Start der Abfrage mit Angabe der benötigten Datenbankfeldern aus der Datenbanktabelle comments
Zeile 4 - 8: Anforderungen die die später anzuzeigenden Datensätze erfüllen müssen
Im einzelnen:
Zeile 4: Trackbacks müssen zugelassen sein
Zeile 5: Es müssen Ping- oder Trackbacks sein
Zeile 6: Der Absender des Trackbacks darf nicht die eigene Domain sein
Zeile 7: Der TB darf auch nicht von twitter stammen / Sinnvoll wäre vielleicht noch eine Zeile, die facebook als Absender ausschließt
Zeile 8: Trackback darf nicht älter sein als heutiges Datum - 2 Monate
Zeile 9: Gruppierung nach der URL des Authors
Zeile 10: Absteigende Sortierung - jüngster Trackback wird als erster angezeigt
Zeile 11: Maximal 5 Trackbacks sollen angezeigt werden
Zeile 12: Die Variable track_result nimmt das Ergebnis der Abfrage auf
Zeile 13: If-Schleife für den Fall, das es keinen, den Anforderungen entsprechenden Datensatz gibt
Zeile 14: Anweisung, was in diesem Falle ausgegeben wird
Zeile 15: Schließen der If-Schleife
Zeile 16: Öffnen einer Foreach-Schleife, die so oft durchlaufen wird, wie entsprechende Datensätze vorhanden sind. Maximal aber nur so oft, wie in Zeile 11 festgelegt. Die Variable track_result wird durch die Variable comment ersetzt wird
Zeile 17: Variable tbCont nimmt den Text-Auszug des Trackbacks auf
Zeile 18: Entfernen von möglicherweise im Text-Auszug vorhandenen HTML- und PHP-Tags
Zeile 19: Vorgabe das Teile des Auszugs durch ... ersetzt werden
Zeile 20: Öffnen der ungeordneten Auflistung
Zeile 21: Ausgabe des einzelnen Trackbacks mit dem gewünschten Aussehen
Zeile 22: Schließen der ungeordneten Liste
Zeile 23: Schließen der foreach-Schleife
Zeile 24: Schließen der Funktion

Anzeigen lasse ich die Trackbacks in der Sidebar anschließend mit dem folgenden Code:

<h3 class="sidebar-title">Letzte Trackbacks</h3>
		<div class="new-article"><?php trackbacks_ausgabe(); ?></div>

Ich hoffe, das der eine oder andere diese Funktion nützlich findet. Vielleicht habt ihr auch noch Verbesserungsvorschläge einzubringen, die ich in die Funktion einarbeiten könnte.

Marcus
Über Marcus 702 Artikel
Ich freue mich über Deinen Besuch auf meinem Blog! Wenn Dir der Artikel gefallen hat, teile ihn doch mit anderen und hinterlasse Deine Meinung. Mehr über mich gibt es hier zu lesen

Hinterlasse jetzt einen Kommentar

Kommentar hinterlassen

E-Mail Adresse wird nicht veröffentlicht.


*


CommentLuv - verlinke einen deiner Blog-Artikel