vicuna CMS テーマの修正 (previous_posts_link()関数・next_posts_link()関数の追加)

vicuna CMS ? WordPress Theme Ext. Custom (以下 vicuna とします)の修正に関する内容もようやく最後に (長かった…) 。今回はprevious_posts_link()関数とnext_posts_link()関数についてです。

previous_posts_link()関数・next_posts_link()関数はサイトトップやカテゴリー毎、タグ事など1ページに複数の投稿記事を表示したときにその前後のページへのリンクを書き出すための関数です (詳細は例のごとく WordPress CodexWordPress Codex日本語版 やグーグル先生に聞いてみてください)。

さて、このprevious_posts_link()関数・next_posts_link()関数は本来、index.phpやcategory.phpやtag.phpなど1ページに複数の投稿記事を表示するために使用されるファイルに記述します。しかしながらvicunaでは表示を統一するためなのか、ページ移動のリンクの表示はfunctions.phpファイル内のvicuna_paging_link()関数を使用して記述されてます。そこで今回はこのvicuna_paging_link()関数内に、previous_posts_link()関数・next_posts_link()関数を記述して対応することにします。

で、その具体的なコードは次のようになります (コードはvicuna_paging_link()関数の後半部分です)。add ? add 間が今回追加したコード、erase ? erace 間が削除するコードです。

	if(!is_single()) {


		if ($max_page > 1)
			echo "$indentText<ul class=\"flip pager\" id=\"flip2\">\n";
		if ($paged > 1) {
// < -- add
			echo "$indentText\t<li class=\"newer\">";
			previous_posts_link( preg_replace('/&([^#])(?![a-z]{1,8};)/', '&#038;$1', $next_label) );
			echo "\n";
// < -- add
// <-- erase
//			echo "$indentText\t<li class=\"newer\"><a href=\"";
//			previous_posts();
//			echo '">'. preg_replace('/&([^#])(?![a-z]{1,8};)/', '&#038;$1', $next_label) ."</a>\n";
// < -- erase
		}
		if (empty($paged) || $nextpage <= $max_page) {
// <-- add
			echo "$indentText\t<li class=\"older\">";
			next_posts_link( preg_replace('/&([^#])(?![a-z]{1,8};)/', '&#038;$1', $prev_label) );
			echo "\n";
// < -- add
// <-- erase
//			echo "$indentText\t<li class=\"older\"><a href=\"";
//			next_posts($max_page);
//			echo '">'. preg_replace('/&([^#])(?![a-z]{1,8};)/', '&#038;$1', $prev_label) ."</a>\n";
// < -- erase
		}


		if ($max_page > 1)
			echo $indentText . '</ul>' . "\n";
	}

previous_posts_link()関数・next_posts_link()関数の引数はリンクのための文字列とページの上限が指定できます。で、今回は変更前の記述に合わせる形でリンクのための文字列を引数として指定しました。そして変更はこれだけです。簡単でしょ?

そしてこれでvicunaの修正に関する内容も終了。長いことおつきあいさせて申し訳ない。これで気になる箇所はほぼ修正できてるはずです。

もし良かったら参考にしてくださいね 😉

コメントを残す

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