お知らせ・雑記

WP構築メモ:小説本文ページのパンくず出し分け

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>

参考:WordPressフォーラム

リンクまわりのitemscopeとかitemtypeとかは必要に応じて設定する。

おわり。

WP構築メモ:ブロックエディタでルビをふる

WPの開発は英語環境で行われているので、当然、日本語のルビこれのことですにはデフォルトでは対応していません。

WP4系までの環境では、ルビを振る場合はWYSIWYGで一つ一つタグを打ち込んでいたのですが、WP5.0から導入されたブロックエディタではユーザー側のタグの手打ちは避ける方針で大幅な仕様変更が行われたので、これまでの方法でルビを振るのが難しくなってしまいました。

カスタムHTMLのパーツを使えばできなくもない、しかしメンテナンス性を考えると嫌だ……どうにかブロックエディタ自体にルビの機能を追加できないか……

うんうん唸ってもよくわからなかったので、素直にプラグインを使うことにしました。WPはプラグインが豊富で、日本語対応しているものも多くて助かります。

リンク先の解説ではWYSIWYGエディタ対応ですが、アップデートでブロックエディタにも対応されてました。神。