WordPress公式テーマ「Twenty Fifteen」を使って小説サイトをつくるときのメモ。ほぼ自分用なので、実際の作業と記事投稿順は一致していません。
やりたいこと
これでシリーズ管理をしている状況で、小説本文ページの目次ページの有無でパンくずリストを出し分ける。
具体的には↓のような「> 目次ページ」の部分。
- 目次ページがある場合
- ホーム > 小説 > 目次ページ > 本文ページ
- 目次ページがない場合
- ホーム > 小説 > 本文ページ
前提条件として、目次ページは固定ページまたはカスタム投稿を使って作成することを想定しています。(タクソノミーのアーカイブとして自動生成できるほどフォーマットが定まってないため)
管理画面
Advanced Custom Fieldsとかを使って、 連載用のタクソノミーに、カスタムフィールド「目次URL」を追加する。
追加した「目次URL」に、小説の目次ページのURLを設定する。
テンプレート設定
そもそも「Twenty Fifteen」にはパンくず表示機能はないので、footer.phpあたりに追加する。
footer.php
<ul class="breadcrumb">
<li>
<a href="/">ホーム</a>
</li>
// 他のページ用のパンくずはこのあたりに書いておく。
<?php if (get_post_type() === '小説本文用のカスタム投稿名'): ?>
<?php $term_sp = get_the_terms( $post->ID, 'タクソノミースラッグ名' );
foreach($term_sp as $term_s) {
$term_id = $term_s->term_id;
$term_name = $term_s->name;
break;
}
$term_idsp = 'タクソノミースラッグ名_'.$term_id; ?>
<li>
<a href="/series" itemprop="url"><span itemprop="title">小説</span></a>
</li>
<?php if(get_field('目次URLのカスタムフィールド名',$term_idsp)): ?>
<li>
<a href="<?php the_field('目次URLのカスタムフィールド名',$term_idsp); ?>" itemprop="url"><span itemprop="title">
<?php $terms = get_the_terms( get_the_ID(), 'タクソノミースラッグ名' );
if ( !empty($terms) ) : if ( !is_wp_error($terms) ) :?>
<?php foreach( $terms as $term ) : ?><?php echo $term->name; ?>
<?php endforeach; ?><?php endif; endif; ?>
</a>
</li>
<?php endif; ?>
<li>
<span itemprop="title"><?php the_title(''); ?></span>
<?php endif; ?>
</li>
</ul>
リンクまわりのitemscopeとかitemtypeとかは必要に応じて設定する。
おわり。