サイトマップの改善とトラックバックの表示の追加

先日のリニューアルでのデグレード。
トラックバックが表示されなくなってしまっていた。
WordPress Bootstrapには、標準では実装されてないんだね・・・。

と、言うわけでcomment.phpをカスタマイズして、トラックバックを表示するようにしてみた。
実装したのはこんな感じ。

<div class="trackback">
<?php if ('open' == $post->ping_status) : ?>
	<h3 id="trackback-url"><?php _e("Trackback URL", "bonestheme"); ?></h3>
	<p class="trackback-comment"></p>
	<input onfocus="this.select()" value="<?php trackback_url(); ?>" class="input-xxlarge" id="tb_url" name="tb_url" accesskey="x"/>
<?php endif; ?>
</div>

これで、無事に表示されるようになった。
(このページでも、下の方に出てます)

 
サイトマップの方は、全ての投稿の一覧を表示したいと思いつつも、
そのまま表示するんじゃ、投稿数が多くなると重いやら長いやらで困る。
と、いうわけで投稿50件ごとにページングする、ページナビゲーションを実装してみた。

WordPressには、標準でpaginate_linksって言う
ページナビゲーションを生成する処理があるんだけれど、
WordPress Bootstrap(と、言うよりはベースになったbonesか?)では、
オリジナルのページナビゲーションを実装している様子。
デザイン的に統一するんなら、そっちをパクった参考にしたほうがいいよね。

って、事で長い実装になってしもうた。

<?php
	//pagenavigation
	$posts_per_page = $archive_query->posts_per_page;
	$numposts = $archive_query->found_posts;
	$max_page = $archive_query->max_num_pages;
	if ( $numposts <= $posts_per_page ) { return; }
	if(empty($paged) || $paged == 0) {
		$paged = 1;
	}
	$pages_to_show = 3;
	$pages_to_show_minus_1 = $pages_to_show-1;
	$half_page_start = floor($pages_to_show_minus_1/2);
	$half_page_end = ceil($pages_to_show_minus_1/2);
	$start_page = $paged - $half_page_start;
	if($start_page <= 0) {
		$start_page = 1;
	}
	$end_page = $paged + $half_page_end;
	if(($end_page - $start_page) != $pages_to_show_minus_1) {
		$end_page = $start_page + $pages_to_show_minus_1;
	}
	if($end_page > $max_page) {
		$start_page = $max_page - $pages_to_show_minus_1;
		$end_page = $max_page;
	}
	if($start_page <= 0) {
		$start_page = 1;
	}
	echo '<div class="pagination"><ul class="clearfix">'."";
	
	//first
	if ($paged > 1) {
		$first_page_text = "&laquo";
		echo '<li class="prev"><a href="'.get_pagenum_link().'" title="First">'.$first_page_text.'</a></li>';
	}
	
	//previous
	$prevposts = get_previous_posts_link('&larr; Previous');
	if ($prevposts) {
		echo '<li>' . $prevposts  . '</li>'; 
	} else {
		echo '<li class="disabled"><a href="#">&larr; Previous</a></li>';
	}
	
	//num
	for($i = $start_page; $i  <= $end_page; $i++) {
		if($i == $paged) {
			echo '<li class="active"><a href="#">'.$i.'</a></li>';
		} else {
			echo '<li><a href="'.get_pagenum_link($i).'">'.$i.'</a></li>';
		}
	}
	
	//next
	$nextposts = '<a href="' . get_pagenum_link($paged + 1). '">Next &rarr;' . '</a>';
	if ($paged == $max_page) {
		echo '<li class="disabled"><a href="#">Next &rarr;</a></li>';
	} else {
		echo '<li>' . $nextposts  . '</li>'; 
	}
	
	//last
	if ($end_page < $max_page) {
		$last_page_text = "&raquo;";
		echo '<li class="last"><a href="'.get_pagenum_link($max_page).'" title="Last">'.$last_page_text.'</a></li>';
	}
	echo '</ul></div>'."";

?>
</div>

本当はpaginate_linksみたいに汎用的に作った方がいいんだろうけどね。
今んとこ、サイトマップ以外での用途が思いつかなかったから、
そのままサイトマップ用のページに記述してもうた。
その内暇ができたら、function.phpに移そう。


この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL