複数ページの記事でページ毎のタイトル付きリンクを出力する
公開日:
更新日:
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();
と記述するだけです。
なお、この関数は、記事とページのみで動作し、アーカイブページなどでは動作しません。
