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

WordPress

WordPressでカテゴリデータに追加のデータフィールドを与えたい場合があります

この記事ではカテゴリデータにカスタムフィールドを追加する方法を紹介します

カテゴリ追加ページと編集ページに入力フォームを追加する

{$taxonomy}_add_form_fields()フックと{$taxonomy}_edit_form_fields()を使います

edit_category_form_fields()というアクションフックもありますが、category_edit_form_fields()は廃止予定となっています

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}_edit_form_fields()は共通エディットフォームのフックで今回はカテゴリページなので{$ taxonomy} には「category」が入ります

add(カテゴリ追加時)とedit(カテゴリ編集時)と同じ関数を呼び出しています

カテゴリ投稿・編集ページにテキストフォームを追加

作成したフォームの情報をカスタムフィールド保存する

edited_term()アクションフックにて保存ボタンが押された時に処理を追加します

update_term_meta()にてカスタムフィールドのキーと値を保存可能

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()と違って、キー名からの値も配列になっておりますので、特定のカテゴリの「category_group」の情報を取得する場合は以下の様になります

$meta = get_term_meta($cat_id);
$category_group = $meta['category_group'][0];