エンサイクロペディア紆余曲折

WordPressで小説サイト

 小説に詰まったもんだから逃げてるだろうと言われそうですが、またエンサイクロペディアです。

 Echo Knowledge Baseがお手軽でいいけどレイアウトがどうにも気に食わなくて、再度カスタム投稿タイプに取り組んだはいいけどやはり表示と検索方法(カテゴリで振り分けたり、タグで関連する項目を表示したり)に詰まって暗礁に乗り上げた…という処までが前回の話1
 結局、Echo Knowledge Baseのページ見栄えを改造する方が早そうだという方向へ舵を切ったのでした。

 Echo Knowledge Baseはこのたび(2020.3)大幅にConfigurationに変更がありまして、6つのウィザードにそって設定を進めていく形式になりました。有り体に言えばあんまり判りやすいとは言い難いのですが2、いろいろいじくり回してようやく【Global Wizard】の2頁目に【Template Choice】のタブがありまして、そこで一応現在のテーマ【Current Theme】とナレッジベースが用意したテンプレート【Knowledge Base Theme】を選べるようになっていることがわかりました。
 以前は現在のテーマから自分でナレッジベース用に別建てのテンプレート(epkb_post_type_1.php)を作る仕様になっていましたが、現在は問答無用でデフォルトのテンプレート…用語集トップに固定ページ(page.php)と、用語集の記事(Article)に投稿ページ(single.php)が使われる設定になっています。

 しかしpage.phpにしろsingle.phpにしろ、前述のようにうちで使用しているテーマは小説やエッセイを載せることを前提としているので、あまり用語集向きではないのです。さてどうしよう。3

 ただ、よくよく考えれば固定ページ(page.php)に関しては編集画面の【ページ属性】でテンプレートを選択できますので、簡単に変更できるのです。よしそれじゃあ、とばかりにpage.phpを複写して別の名前を付けたテンプレートに大改造を施しまして4、ナレッジベースのトップ用に仕立てました。ここまでは小説ページと通常のページの仕様を変更するために今までもやってきたことなのでそれほど苦はありませんでした。(<嘘つけ!5

 問題は投稿ページ。
 上記と同じように別のテンプレートを作ること自体は既に前回6カスタム投稿タイプで構築しようと企てたときに作ったものがそのまんま残っています7ので、そのまんま流用。肝はそれを適用させる方法ですね。

 なんせ、投稿ページの編集画面にはテンプレートを選択する画面がないのです。

 ではどうするか。single.phpに使用するテンプレートを分岐させる命令を書いておけばいいのです。条件分岐、いわゆるif文ですね。この場合、single.phpにはこの分岐だけを記述します。

<?php
if ( in_category(‘wordpress‘) ) { //ここにカテゴリのスラッグを入れる
get_template_part( ‘single-wp‘ , false );//上記カテゴリ専用のテンプレート
}else { //それ以外(ナレッジベースの場合)
get_template_part( ‘single-kb‘ , ‘normal’);//ナレッジベース専用のテンプレート
}
?>

 うちでsingle.phpを使用しているのは本稿「WordPressで小説サイト」だけなので、本稿のスラッグを持つ投稿は本稿のテンプレート(single-wp.php)、あとはすべてナレッジベース用のテンプレート(single-kb.php)を適用させるということになります。

 テンプレート階層だとか、ifでの条件分岐とか、WordPressで小説サイトを作ろうと企てたあたりから相応に勉強してきたつもりですが…ここにきてようやく少しずつ飲み込めてきた気がします。

 かくて、エンサイクロペディアトップと記事ページが一応納得できるかたちでできあがりました。…あとは、ひたすら書き込まなきゃなりませんね。8

  1. しょーもないセーブミスでほぼできあがっていたテンプレートを一回吹っ飛ばしたというオマケ付き…
  2. どの設定がどこに配置されてるのかつくづくわかりにくい…
  3. いっそのことエンサイクロペディア用に別のテーマをのっけたWordPressサイトを構築しようかとも考えました。今思えば何故そこまで思い詰めにゃならなかったんだろうと不思議…。
  4. テーマ【Scribe】における通常のページはヘッダーの下にタイトルだけが被った全幅の画像が入りまして、その下からコンテンツが始まるのですが、エンサイクロペディアのトップはヘッダーの下からすぐにコンテンツが入って画像はバックグラウンドになっています
  5. 例によってテーマデフォルトのpage.phpを複写して別名を付けたファイルにちょこっと書き足し、ちょこっと削り、その度にレイアウトを確認しては一喜一憂するわけです。
  6. エンサイクロペディアへの長い道参照
  7. 実は、ページの見栄えは調整できたものの、カスタムフィールドというやつに手を出して動作があんまりにも不安定なので放置してました。カスタムフィールドについてはまた後日項を分けてまとめようと思います。
  8. またいつ「気に食わん!」とかいって設定変えたくなるかわかりませんが…

コメント