WordPressで連載形式記事のナビゲーションを作ってみる
VBAの入門記事を連載形式で書いたことがあるんですが、その連載記事だけ集めたナビゲーションみたいなものを実装してみましたので、方法を書き残してみます。
完成図
こんな感じのリストが、特定の記事のみ末尾に追加されています。
実装
リストを作る
<ul> <li><a href="http://x1">第1回の記事</a></li> <li><a href="http://x2">第2回の記事</a></li> <li><a href="http://x3">第3回の記事</a></li> </ul>
こんな感じの、各記事へのリンク付きリストが並んでるものをイメージ。でもこのままだと、現在そのページに居るときもリンクが貼られてしまいます。2回目の記事を見てるときは2回目記事へのリンクは不要ですよね。
<ul> <li><?php if(!is_single(記事ID1)): ?><a href="http://x1"><?php endif; ?>第1回の記事<?php if(!is_single(記事ID1)): ?></a><?php endif; ?></li> <li><?php if(!is_single(記事ID2)): ?><a href="http://x2"><?php endif; ?>第2回の記事<?php if(!is_single(記事ID2)): ?></a><?php endif; ?></li> <li><?php if(!is_single(記事ID3)): ?><a href="http://x3"><?php endif; ?>第3回の記事<?php if(!is_single(記事ID3)): ?></a><?php endif; ?></li> </ul>
その記事IDじゃないときだけ、aタグ
を表示するように書いてみました。
このリストを、特定の記事のときに表示されるようにしていきます。single.php
に全部書いてもいいんですが、量が多くなってくると見づらいし、single.php
自体のサイズを無駄に増やすのも良くないのかなと思うので、別ファイルに書いておいて特定のページだけ読み込む、という感じにしようと思います。
今回は、上記のコードを、テーマファイル(…/wp-content/themes/テーマ名/
)の直下にsample-navi.php
という名前で保存してみました。
インクルード(読み込み)する
<?php get_template_part('sample-navi'); ?>
single.php
のリストを表示したいところに、ファイル名を指定してこのように書くと、読み込んでくれます。
このままだと全部のページに例のリストが表示されてしまうので、
<?php if (has_tag('タグのスラッグ')): ?> <?php get_template_part('sample-navi'); ?> <?php endif; ?>
このように書くと、特定のタグを持っている場合のみインクルードしてくれます。
特定のカテゴリだけ、という括りにしたい場合は1行目をこちらに差し替え。
<?php if (in_category('カテゴリのスラッグ')): ?>
タグとかカテゴリ関係なくて、記事を指定したい場合は
<?php if (is_single(array(記事ID1,記事ID2,記事ID3))): ?>
のように、IDをカンマで区切って書いていけばその記事にだけ適用されます。
多用するなら…
と、ここまで手書きでごねごねしてたわけですが、シリーズものが多いのならカスタムタクソノミー機能を使ったほうが楽なのかなー、という気がします。
今まで触る機会がなかったのであんまりカスタムタクソノミーってよくわかっていないのですがw 自分で出来るようになったらまた書きたいですね。
コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)
YouTubeでQ&Aコンテンツを企画しています
運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。