[WP Plugin] Advanced Custom Fields プラグインで WordPress のカテゴリーにカスタムフィールドを追加する

プラグインを利用して管理画面に入力フィールドを追加し、functions.php で値を取得するところまで。

Contents

Documentation

公式ドキュメントがしっかりしていて、安心感があります。

こちらを参考にさせて頂きました。

Installation

導入はプラグインインストールできるので省略します。

WordPress v4.8
Advanced Custom Fields v4.4.11

インストールが完了すると、管理画面から「カスタムフィールド」が選択できます。

Configuration

管理画面の「投稿>カテゴリー」の編集画面にカスタムフィールドを追加する設定を行います。

「カスタムフィールド>フィールドグループ>新規追加」をクリックします。
フィールドグループにラベルを付けておきます。
ここでは archive_head とします。

次に「フィールドを追加」をクリックし、カテゴリー編集画面に表示したいカスタムフィールドを作成します。
表示ラベル Title と PHP から呼び出すためのフィールド名 archive_head_title、フィールドタイプとして テキスト を設定しました。

この手順を繰り返し、必要なだけフィールドを追加していきます。

次に設定したフィールドをどこに表示させるかを設定します。

セレクトボックスの中から Taxonomy Term, 等しい, カテゴリー を選択します。

似たような選択肢が多くて迷いますが

左のセレクトボックスの中には「Post Category」がありますが、こちらはカスタムフィールドを追加する「投稿」の条件をカテゴリで絞るという条件のため、これを指定すると、指定したカテゴリの投稿にだけカスタムフィールドが出てくる、という設定になってしまいます。

WordPressのカテゴリやタクソノミーにカスタムフィールド項目を追加する方法 | エス技研

とのことで大変参考になりました。

「公開」をクリックすると保存されます。

Usage

カスタムフィールドにデータを入力し、値を取り出してみましょう。

今回の仕様ですと get_field(field_name, category_term_ID) が必要そうです。

functions.php
if ( is_archive() && function_exists( 'get_field' ) ) {
  $post_category = get_the_category();
  $category_id = $post_category[0]->cat_ID;
  $title = get_field( 'archive_head_title', 'category_' . $category_id );
}

is_archive() でアーカイブページであるか、function_exists( 'get_field' ) でプラグインが有効であるかをチェックすると良さそうです。

以上でアーカイブページ表示時に $title に値が入るようになりました。