カスタムフィールドを使う

WordPressで小説サイト
孤高

 全く懲りずにエンサイクロペディアのお話です。

 稲刈りの季節になりまして、シンエヴァ完結編でレイちゃんの「稲刈り、したかった」という台詞に滂沱たる涙にくれた柳としては「よし、是非ともレイちゃんに稲刈りをさせてあげやう!」と企てて鋭意執筆活動中。そこで、ふとエンサイクロペディアがここのところ全く手つかずだったことに気付いたのでした。稲刈りとなるとやっぱりタカヒロ君だよね、と思ってプロット立ててるうちに、タカヒロ君の設定詳細を忘れかけていることに気付いたと。いかん、ここは本腰入れてエンサイクロペディアを充実させねば!と思った次第。なんという動機…結局、エンサイクロペディアなんていっても自分の備忘録代わりに作ってるというのが大バレです。

 エンサイクロペディアの入力は、ここのところWordPressの再利用ブロック 1 を使っていたのですが、これがまたあまり使い勝手のいいシロモノではない。
 再利用ブロックは同じモノを頻回に使うならそれでいいのですが、フォーマット(つまり書き込むことが前提の文書)としては、甚だ具合が悪いのです。柳が小説の区切りとして使っている***アスタリスク3つみたいに呼び出して貼り付けるだけならいいのですが、ヘタに加工してしまうとその加工が他のページにも及んでしまう。本来はそのために「通常のブロックへ変換」というコマンドも存在するのですが、どうにも動作不良 2 が多いのです。註釈のショートコードもこの方式で入力しているのですが、何遍消してしまった ことか。3 

 そこで思いついたのが、カスタムフィールドという機能です。
 要は決まった形式で沢山打ち込む記事がある場合、その入力のための様式フォーマットを作ってしまおうというモノ。出力の体裁も統一できるので、エンサイクロペディアとしての体裁を統一したい柳としては「おお、これこれ!」と飛びついたのはいうまでもありません。

 カスタムフィールドそのものはWordPress標準のものがありまして、それを支援するタイプとか独自型とか他にもいろんなプラグインが存在します。ただし、実際のページに出力させるためにはどうしてもテンプレート 4 を弄らなければならない。
 …ま、そーくると思った。
 なぁんて不貞腐れても事は始まりません。以前も何かで思い立ってカスタムフィールドにトライしたはいいけど見事玉砕した記憶がおぼろげにあった理由が解った気がします。
 で、まずは至極真っ当(<何処が!)にエコーナレッジベースのテンプレートを弄る方法を模索しました。要は、エコーナレッジベースの記事テンプレートに、カスタムフィールドの値を出力させるコマンドを書き込んでやればいいのですから。

 当サイトではエンサイクロペディアのツールとしてエコーナレッジベースを使用しています。高機能なのは良いとして、頻々とアップデートがかかって5しかもその説明が非常に判りづらいのでいままでも四苦八苦してきました。
 プラグインとしての動作保証、という観点からは至って当たり前の話なのですが、プラグインが許容するカスタマイズ以上のことをしようと思うと非常にやりづらい。きちんとしたサポートページがあって、丁寧なドキュメンテーション 6もあるのですが、惜しむらくは英語。英語のページをGoogle先生に無理矢理訳して貰うと…大体のニュアンスはつかめてもいまひとつピンとこない。いっそ原文で読めばいいという話もあるのですが、時間が掛かりすぎて根性が保たないのでした(笑)

 記事テンプレートは通常、テーマファイル内に置きます。デフォルトはsingle.php。
 しかしエンサイクロペディアはエコーナレッジベースというプラグインで管理されているので、記事ページのテンプレートがあるとすればおそらくプラグインのフォルダにあるはずなのです。
 WordPressのダッシュボード、プラグインの項目の下には「プラグインエディター」というものがあります。プラグインも結局はプログラムの集合体ですから、エディタでもって編集することはできる訳です。おそらく開けてみたら記事ページのテンプレートに相当するモノが存在する筈、と思ってこの「プラグインエディター」からエコーナレッジベースを開けて中を捜し、おそらくはこれだろうな、というモノ(single-article.php)は見つけました。実際、弄ってみたら表示が吹っ飛んだりもしたので(爆)これは間違いない!と色々弄ってみました…が、最終的に玉砕。まあ、プラグインの中で処理される過程で何らかのチェックが入るのか、phpとして構文が間違っているのか…とにかくエコーナレッジベースのテンプレートを直接いじるプランはあえなく頓挫しました。

 じゃあ、次の策は。
 エコーナレッジベースのデフォルトテンプレートでなく、現在のテーマ(ウチで言うと「Scribe」)から選ばせる方法もあるにはあります。Theme Compatibility Modeから入ればいいのは判るのですが、記事ページにおいてテーマ「Scribe」のうちどのテンプレートが選ばれるのか判らない。ないしは、使用中のテーマ内に新しいテンプレートを置くとしても、エコーナレッジベースが認識出来るファイル名がわからなければ、テンプレートのつくりようがないのです。7
 あんまり悪戯してるとサイトそのものを吹っ飛ばしかねないので、この案もボツ。

 そして辿り着いたのが、プラグイン「カスタムフィールドテンプレート」という次第。
 カスタムフィールドテンプレートは、カスタムフィールドで入力した情報を出力するためのテンプレートを、プラグインの設定ページで編集できるというプラグインです。
 一番問題になっているのが出力の話なので、とりあえず入力フォームの話は割愛します。
 入力したデータをページ上に出力させるには、『「cft」and「cftsearch」Shortcode Format』というメニューからFORMATというボックスに、HTML+CSSで出力するページを書き込みます。phpにも対応するらしいですが柳は未使用。サンプルではテーブルにクラスとして「cft」を適応させる仕様になっていましたのでそれを踏襲しました。編集したフォーマットはショートコードで本文ページ内 8 に貼り付けられるので、ページのテンプレートはどれだ!何処に書き込みゃいいんだ!というところで悩まなくてすむ訳です。
 後はひたすら、出力のための体裁をCSSいじりながらあーでもないこーでもないと整えるだけ。

 勿論、複数のテンプレートを作って使い分けることも可能で、固定ページ、投稿ページ、カスタム投稿ページとスラッグで表示させるテンプレートを選ぶことも出来ます。この場合、以前調べたエコーナレッジベースのスラッグを登録しておけば、エコーナレッジベースの新規記事を作ろうとしたら今回作ったキャラ用のフォーマットが表示されるという次第。他にも特定のページテンプレートを使用する場合に表示させたり、カテゴリIDで表示させることもできる。なかなか使いではありそうです。データベース作るならこうでないと!という機能が嬉しいですね。

 柳のエンサイクロペディアではテキストエリアぐらいしか使わないのですが、その気になればこのカスタムフィールド、チェックボックスとかプルダウン、ラジオボタン等々いろんな入力形態が使えるようです。出力も上記のようにかなり自由度が高いので使いではありそうです。(ただ残念なのは柳のデザインセンス、という話ですな。ゴメンナサイ…)

 何はともあれ、エンサイクロペディアをサクサク入力する下地は整いました。
 さ、頑張ってレイちゃんの稲刈りエピソードを書こう…

2021/09/25 追記

プラグイン「カスタムフィールドテンプレート」の不具合について

 出来た!と言っといて恐縮ですが、プラグイン「カスタムフィールドテンプレート」に不具合があったのでその対処について書いておきます。

 不具合というのは…
 他じゃありませんが新しい記事ページを作ったときに肝心のテンプレートが表示されないのです。「カスタムフィールドテンプレート」というエリアはあるのですが、入力画面が白紙。これは困った。
 調べたところ「カスタムポストタイプ (カンマ区切り):」というオプションでカスタム投稿タイプのスラッグを入力するという対処法もあったのですが、既に入力済み。色々やってみた挙げ句、新しいページを作って一度下書き保存し、記事一覧からその下書きを「クイック編集」で呼び出します。そうしてフォーマットを読み込ませるとテンプレートが現れるので、そこの各項目になんでもいいので文字を打ち込んで再度下書きを保存する。そうすると、記事ページの編集画面を出した時にちゃんとテンプレートが表示されました。後は落ち着いて編集画面から項目を入力していきます。
 何がどうなってそうなってしまったのかは判りませんが、一応使えそうなので当分これで凌ごうと思っています。まだまだ前途多難ですエンサイクロペディア…。

  1. 再利用ブロック…ブロックまたはブロックのグループを保存して、サイトの投稿やページにあとから使用できるようにするもの。定型文には有効ですね。
  2. 通常のブロックに変換したはずなのにされていないケースが頻発。
  3. 註釈のショートコードは現在再利用ブロックとして呼び出し、コピー&ペーストして註釈を書き込んでいるのですが、うっかりカット&ペーストしてしまうと保存したときに再利用ブロックのショートコードが消えてしまうのです。簡単に変更できないようなロック機構とかあればいいのになぁ…
  4. phpテンプレート…テーマの中にある、出力するページの骨組みを作るプログラム。phpと呼ばれる言語で書くのですが、これがhtmlの比じゃなく難しい…
  5. ちなみに、現在のエコーナレッジベースのversionは8.1.1です。
  6.  ドキュメンテーション…文献や証拠書類の提示・提供。特に、コンピューターのソフトウェアの取扱説明書。要はトリセツですな。最近はこう書いてあることが多いようで…
  7. 以前はナレッジベースに認識させるためのテンプレートファイル名が提示されていたと記憶しているのですが、現在のドキュメンテーションからは削除されているようです。
  8. 本文ページ内にはショートコードブロックというものがありますので、それに書き込みます。

コメント