WordPress | カテゴリデータでカスタムフィールドを利用する方法

WordPressでカテゴリデータに追加のデータフィールドを与えたい場合があります。この記事ではカテゴリデータにカスタムフィールドを追加する方法を紹介します。
カテゴリ追加ページと編集ページにフォーム入力欄を追加
先にカテゴリ追加ページと編集ページに独自のフォーム入力欄を追加します。
カテゴリのデータにカスタムフィールドを追加するには{$taxonomy}_add_form_fields()フックと{$taxonomy}_edit_form_fields()を使います。
※edit_category_form_fields()というアクションフックもありますが、category_edit_form_fields()は廃止予定となっています。
{$taxonomy}_add_form_fields()はカテゴリ追加のフォームになります。{$taxonomy}_edit_form_fields()はカテゴリ編集のフォームになります。
functions.php
function category_form_fields_function($tag){
$cat_id = $tag->term_id;
$meta = get_term_meta($cat_id);
echo '<tr class="form-field"><th><label for="extra_text">グループ</label></th><td><input type="text" name="category_group" id="category_group" size="25" value="'.esc_html($meta['category_group'][0]).'" /></td></tr>';
};
add_action('category_add_form_fields','category_form_fields_function');
add_action('category_edit_form_fields','category_form_fields_function');
{$taxonomy}の部分は共通エディットフォームのフックです。今回はカテゴリページなのでには「category」が入ります。(category_add_form_fields、category_edit_form_fields)
内容は同じなのでcategory_add_form_fields(カテゴリ追加時)とcategory_edit_form_fields(カテゴリ編集時)と同じ関数を呼び出しています。


追加したフォームの情報をカスタムフィールドに保存する
次は追加したフォームの情報(値)をカスタムフィールドに保存する方法です。
edited_term()アクションフックにて保存ボタンが押された時に処理を追加して、update_term_meta()にてカスタムフィールドのキーと値を保存します。
functions.php
function save_category(){
update_term_meta($_POST['tag_ID'],'category_group', $_POST['category_group']);
};
add_action ( 'edited_term', 'save_category');
メモ:update_term_meta(id,key,value)
カテゴリデータ更新後にもフォーム内に表示されていればカスタムフィールドのデータ保存成功している事が確認できます。


作成したカスタムフィールドのデータを呼び出して利用する
既にフォーム内に出力するのに利用していますが、get_term_meta($cat_id)とすることで情報を配列で取得可能です。
今回はカスタムフィールド名を「category_group」というキー名にしてあるので配列の内容は以下になります。
Array ( [category_group] => Array ( [0] => WEB制作 ) )
get_option()と違って、キー名からの値も配列になっておりますので、特定のカテゴリのカスタムフィールド名から保存したデータを取得します。
取得する値は、カスタムフィールド名[0]に入っています。「category_group」の情報を取得する場合は以下の様になります。
$meta = get_term_meta($cat_id);
$data = $meta['category_group'][0];
echo $data;
ディスカッション
コメント一覧
まだ、コメントがありません