Kommentare und Pingbacks getrennt anzeigen

Während meines Upgrades auf WordPress Version 2.7 kam mir der Gedanke, dass ich Ping- und Trackbacks von den „richtigen“ Kommentaren trennen könnte. Heute fand ich mal etwas Zeit, um mich dieser Thematik zu widmen und nun bin ich mit dem Ergebnis auch recht zufrieden. Doch eins nach dem anderem.

Nachdem ich nach (recht kurzer) Recherche mittels Google nur eine etwas ältere Anleitung zum Separieren gefunden hatte, die sich mit WordPress vor Version 2.7 auseinandersetzt, habe ich erstmal einen Blick in den Code für die Kommentare geworfen, den ich beim Upgrade ja ohnehin anpassen musste. Dort wurde die Funktion wp_list_comments() aufgerufen, deren Implementierung ich in der comment-template.php fand. Dieser Funktion kann man Parameter übergeben, die die Anzeige der Kommentare beeinflussen können – unter anderem auch ein Parameter zum Bestimmen der Kommentar-Typen, so dass man Pingbacks und Kommentare getrennt behandeln kann. Will man nur Kommentare anzeigen, würde man den Aufruf folgendermaßen ändern:
wp_list_comments(array('type' => 'comment')).

Soweit, so gut – so kann man Pingbacks und Kommentare also trennen. Aber damit war es noch nicht getan, denn beide sollten nicht gleich aussehen, da es bei den Pingbacks eigentlich ausreicht, wenn lediglich ein verlinkter Titel angegeben ist. Außerdem stand im Titel der Kommentare noch die Gesamtanzahl und nicht die alleinige Anzahl der Kommentare. Nach einer weiteren kurzen Befragung von Google fand ich schließlich einige praktische Artikel von I Am Jeriko, in denen genau auf diese Problematiken eingegangen wird – die Separierung von Kommentaren und Pingbacks, die Beeinflussung der Anzahl-Anzeige und schließlich die Anpassung der Kommentare an sich. Der wesentliche Teil meines Kommentar-Templates sieht nun so aus:

<?php if ( !empty($comments_by_type['pings']) ) : ?>
	<h3><?php $pingCount = ping_count(); echo( $pingCount . ' Pingback' . ($pingCount == 1 ? '' : 's') ); ?></h3>
	<ol class="pingbacklist">
	<?php wp_list_comments(array('type' => 'pings', 'callback' => 'rattlab_pingback'));?>
	</ol>
<?php endif; ?>

	<h3><?php comments_number(__('No Responses', 'kubrick'), __('One Response', 'kubrick'), __('% Responses', 'kubrick'));?></h3>
<?php if ( !empty($comments_by_type['comment']) ) : ?>
	<ol class="commentlist">
	<?php wp_list_comments(array('type' => 'comment'));?>
	</ol>

	<div class="navigation">
		<div class="alignleft"><?php previous_comments_link() ?></div>
		<div class="alignright"><?php next_comments_link() ?></div>
	</div>
	...
<?php endif; ?>

Interessant ist in diesem Fall, was passiert, wenn die Kommentare aufgrund der Anzahl auf mehrere Seiten verteilt sind. In der aktuellen Version ist es ja möglich, eine Maximalanzahl pro Seite festzulegen, damit alles halbwegs übersichtlich bleibt. Ein kurzer Test ergab, dass dann sowohl Pingbacks, als auch Kommentare umgeblättert werden – es kann also passieren, dass man dann weitere Kommentare sieht, während unter der Überschrift der Pingbacks gähnende Leere herrscht. Da ich aber ohnehin nicht mit derart viel Feedback zu kämpfen habe, ignoriere ich das Problem vorerst. Zu guter Letzt hier noch die Funktion, die für die Anzeige der Pingbacks zuständig ist und lediglich einen Link anzeigt:

function rattlab_pingback($comment, $args, $depth) {
	$GLOBALS['comment'] = $comment;

	if ( 'div' == $args['style'] ) {
		$tag = 'div';
	} else {
		$tag = 'li';
	} ?>

	<<?php echo $tag ?> <?php comment_class(); ?>>
	<?php comment_author_link(); ?>
	<?php edit_comment_link(__('(Edit)'),'  ','');
}

Keine Antworten

Die Kommentfunktion ist nicht aktiviert.