【WordPress】ページ区切りブロックで、ページを分割しても表示されない場合
当サイトのリンクには広告が含まれています。
ページ区切り(改ページ)ブロックを使って、投稿を2ページに分割しようとしたところ、分割は出来たけどナビゲーションリンクが表示されないトラブルに遭遇。
原因はテンプレートにwp_link_pages()
の記述が無かったためでした。
<?php the_content(); wp_link_pages(); ?>
テーマを自作している場合は注意
原因から考えると、ブロックテーマで遭遇する事はあまり無いと思いますが、クラシックやハイブリット形式でテーマを自作している場合、ちゃんとテンプレートにwp_link_pages
関数を実装していないとナビゲーションは生成されません。
エディタに「ブロック」として用意されているものだから、てっきりthe_content()
内に自動で出力される類だと思っていました。要注意です。
カスタマイズも出来る
wp_link_pages
がデフォルトで出力するHTMLでも、必要十分な範囲でCSSによる装飾は出来そうですが、パラメータを設定すれば柔軟にカスタマイズが可能です。
デフォルトで出力されるHTML
wp_link_pages();
<p class="post-nav-links">ページ:
<a href="#" class="post-page-numbers">1</a>
<span class="post-page-numbers current" aria-current="page">2</span>
</p>
パラメータ設定:例
$args = [
'before' => '<div class="sample-nav">',
'after' => '</div>',
'link_before' => '<span class="sample-item">',
'link_after' => '</span>'
];
wp_link_pages($args);
出力結果
<div class="sample-nav">
<a href="#" class="post-page-numbers">
<span class="sample-item">1</span>
</a>
<span class="post-page-numbers current" aria-current="page">
<span class="sample-item">2</span>
</span>
</div>
パラメータの一覧は下記のサイトが参考になりました。
wp_link_pages – WordPress私的マニュアル
https://elearn.jp/wpman/function/wp_link_pages.html
1ページ目と同じテンプレートが適用されるので、要素の重複に注意
仕組み上、2ページ目にも同じテンプレートが適用されるので、タイトルやアイキャッチ等、1ページ目と重複する要素を表示したくない場合、テンプレート側の調整が必要です。
例
if ($page < 2) {
// 1ページ目にだけ表示する内容
} else {
// 2ページ目以降に表示する内容
}
ちなみに2ページ以降かどうか調べる方法ですが、対象がアーカイブページではないため、定番のis_paged()
は効かないので注意。
この例では代替として$page
を使いました。