トラックバックの表示

 - by Don

今日はトラックバックに関連する設定をしていました。

まずGet Recent Commentsをインストール。これはサイドバーにcommentとtrackbackを分離してウィジェットで表示してくれるプラグインです(標準ではcommentとtrackbackが一緒くたに表示されてしまいます)。

ただ、このままだとtrackbackのウィジェットのidがcommentのidと被ってしまいますのでget-recent-comments.phpの該当部分を以下のように修正。

function kjgrc_create_recent_trackbacks( $caller = '')
{
	global $kjgrc_we_are_a_widget,$kjgrc_widget_args;

	// $entries = kjgrc_get_entries($max_comments,$chars_per_comment,$chars_per_word,$format,$query,0,$caller);
	$entries = kjgrc_get_comments2('grt',$caller);
	// If we are a widget: Also care for the title
	if ($kjgrc_we_are_a_widget == TRUE) {
		extract($kjgrc_widget_args);
		$entries = $before_widget . $before_title . kjgrc_get_option("grt","sidebar_title") . $after_title .
		'<div id="get_recent_trackbacks_wrap"><ul>' .
		$entries .
		'</ul></div>' .
		$after_widget;
		$entries = str_replace('id="get-recent-comments"', 'id="get-recent-trackbacks"', $entries);
		return $entries;
	}
	return $entries;
}

次に単一記事に対するtrackback数の表示。comment数は"n comments"とかって表示されてますけどtrackback数も表示したいので。

まず、Trackping Separatorをインストール。

functions.phpあたりに以下の関数を追加。

function trackbacks_popup_link() {
	$c = trackpings('count');
	if ($c === 0) {
		$mes = 'No trackbacks';
	} else if ($c === 1) {
		$mes = '1 trackback';
	} else {
		$mes = $c.' trackbacks';
	}
	echo '<a href="';
	the_permalink();
	echo '#trackback" title="Trackback">'.$mes.' »</a>';
}

index.php, archive.php, single.phpのcomment数を表示している部分の後でこの関数を呼び出します。

しかし、このままでは肝心のtrackbackリストそのものが表示されていません。

comments.phpの最後にテーマのcommentsの部分を参考にしながら追加します。

<?php $trackbacks = trackpings(); ?>
<?php if ($trackbacks) : ?>
<aside id="trackback">
<h2>trackbacks</h2>
	<ol class="trackbacklist">
	<?php foreach ($trackbacks as $comment) : ?>
	<li class="<?php echo $oddcomment; ?>" id="comment-<?php comment_ID() ?>">
		<div class="quote"><br /><?php comment_text() ?></div>
	<?php comment_author_link() ?> on <a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date('F jS, Y') ?> at <?php comment_time() ?> <?php edit_comment_link('edit','  ',''); ?></a>
	</li>
	<?php endforeach; ?>
	</ol>
</aside>
<?php endif; ?>

これでようやくトラックバックが表示されます。疲れた。

No comments yet.