複数ページの記事でページ毎のタイトル付きリンクを出力する

WordPressでページ分けされた記事の中で、他のページへのタイトル付きリンクを出力する方法です。
イメージしにくいと思いますが、下記画像のようなリンクを作成します。

複数ページの2ページ目以降のタイトルには、カスタムフィールドのpagetitleを設定しておきます。
カスタムフィールドのpagetitleは、2ページ目以降のページ数分順番に設定し、1ページ目には記事のタイトルを使用します。

では、早速サンプルコードです。
以下のfunctionを、テンプレートのfunctions.phpに記述してください。

function outPageLink(){
	global $page;
	global $post;

	if((is_single() || is_page()) && function_exists('wp_link_pages')) : 
		$pagebox = wp_link_pages('before=<div class="pagelinkbox">&after=</div>&next_or_number=number&pagelink=Page%&echo=0');
		$pagetitle=get_post_custom_values('pagetitle');

		if(!empty($pagebox) && !empty($pagetitle)):
			$pagecount = substr_count($post->post_content,"<!--nextpage-->")+1;
			for($i=0;$i<$pagecount;$i++ ){
				$replace_page = $i+1;
				$replace_text = 'Page' . $replace_page;
				if($i == 0){ $pagebox = str_replace($replace_text,$replace_page . '. ' . $post->post_title,$pagebox);
				}elseif(!empty($pagetitle[$i-1])){ $pagebox = str_replace($replace_text,$replace_page . '. ' . $pagetitle[$i-1],$pagebox); }
			}
			echo $pagebox ;
		endif;
	endif;
}

上記outPageLinkは、WordPressの標準関数であるwp_link_pagesを使い、wp_link_pagesから出力されるhtmlソースを、記事タイトルとカスタムフィールドpagetitleの内容に置き換えるという動作をする関数です。
ページのテンプレートから呼び出す場合は、

outPageLink();

と記述するだけです。

なお、この関数は、記事とページのみで動作し、アーカイブページなどでは動作しません。

この投稿へのコメント

コメントはありません。

コメントを残す

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

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

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

トラックバック URL