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