Web制作のティップスまとめ。たまにはコラムも

【WordPress】ページ区切りブロックで、ページを分割しても表示されない場合

【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を使いました。

  1. メモルカ
  2. Web制作
  3. 【WordPress】ページ区切りブロックで、ページを分割しても表示されない場合
上に戻る