Advanced Custom Fieldsに交換
WordPressで使用していたEditor TemplatesプラグインをAdvanced Custom Fieldsに交換しました。
交換の理由
Editor Templatesプラグインは、もう何年も更新されていなかったものの、プライムストラテジー社による配布で、問題があれば更新される安心感がありました。それが今では、公式のプラグイン検索で出なくなっています。
Gutenberg対応の更新も無かったので、Classic Editorプラグインのサポートが終了したときには問題が発生するかもしれません。それ以外にも何らかの問題が生じた際に更新版が出ないと安心して使用し続けることができません。
Advanced Custom Fieldsは、Editor Templatesのプライムストラテジー社 大曲氏が共著者の本でも使用されていましたから、安心感がありました。
Editor Templatesとの比較
Editor TemplatesプラグインはPHPのテンプレートファイルを作成する必要があり、基本的な設定もサンプルコードを見なければしづらく、分かりづらい面がありました。Advanced Custom Fieldsは、基本的な設定は管理画面上で行え、便利でした。
一方で、別な環境に設定し直す際には、Editor Templatesがファイルコピーで済むところも、Advanced Custom Fieldsでは管理画面で設定する必要があるようで、手間がかかりました。
デフォルト値の取り扱いが違うようです。Editor Templatesは、新規作成時だけデフォルト値が入りました。既存の投稿を開いたとき、該当箇所に値が入っていない場合は、値が未設定のままでした。Advanced Custom Fieldsは、そのような場合、デフォルト値が入ります。更新ボタンをクリックするまでは値は変わりませんが、値を変更する操作をしなくても、更新ボタンをクリック時に設定値が変わる場合があるところは異なっています。
複数の項目に関わる入力チェック
入力チェックとして、必須かどうかは管理画面上で簡単に設定できますが、より凝ったチェックは、functions.php上にアクションフィルタacf/validate_valueを使用した記述で行うことができます。Advanced Custom Fieldsのドキュメントページには、サンプルコード付きで分かりやすく載っています(https://www.advancedcustomfields.com/resources/acf-validate_value/)。
このチェックで、設定対象フィールドの値は$valueで取得できますが、他フィールドの値は $_POST['acf']['フィールドのハッシュ値']
で取得できます(https://www.advancedcustomfields.com/resources/acf-save_post/)。別な環境に設定し直す際には、適切なハッシュ値に変更する必要があります。
表示位置変更
デフォルトではコンテンツエディタが編集画面の上部に表示されますが、下の方に表示したい場合は、コンテンツエディタより上に表示したいフィールドグループに対してSettingsの位置を「高(タイトルの後)」に設定して、表示位置を変更できました。
アイキャッチ画像の位置も変更できました。方法はAdvanced Custom Fieldsのドキュメントページ(https://www.advancedcustomfields.com/resources/moving-wp-elements-content-editor-within-acf-fields/)に載っていたサンプルを少し応用しただけです。サンプルではコンテンツエディタを指定するため $('#postdivrich')
としている箇所を、アイキャッチ画像を指定するため $('#postimagediv')
に変えただけです。