WordPressのカテゴリー一覧画面にフォームを追加してメタ情報を持たせる
こんにちは。
Webエンジニアのまぶちです。
WordPressのカテゴリーにメタ情報(カスタムフィールド)を持たせる方法を解説します。
-----sponsored link-----
カテゴリー一覧、編集ページにフィールドを追加する
まず、カテゴリーのメタ情報を管理画面で編集できるようにフィールドを追加します。
1 2 3 4 5 6 7 |
add_action( 'category_add_form_fields', 'my_category_add_form_fields'); function my_category_add_form_fields() { echo '<div class="form-field"> <label for="sample">サンプル</label> <input name="sample" id="sample" type="text" value="" size="40"> </div>'; } |
上記のようにアクションフックのcategory_add_form_fieldsを使用すると、「新規カテゴリーを追加」の最下部にフォームが追加されます。
1 2 3 4 5 6 7 8 9 10 |
add_action( 'category_edit_form', 'my_category_edit_form'); function my_category_edit_form() { $sample = get_term_meta($_GET['tag_ID'], 'sample', true); echo '<table class="form-table"> <tr class="form-field"> <th scope="row"><label for="sample">サンプル</label></th> <td><input name="sample" id="sample" type="text" size="40" value="'. $sample .'"></td> </tr> </table>'; } |
アクションフックのcategory_edit_formを使用すると「カテゴリーの編集」の最下部にフォームが追加されます。
見た目を統一されるためにtableタグで囲っています。
フォームに入力した内容を保存する処理
上記だけだとフォームが追加されるだけでデータベースに保存されないので、タームメタに保存する処理を記述します。
1 2 3 4 5 6 7 |
add_action('edited_term', 'save_ex_category_fileds'); add_action('create_term', 'save_ex_category_fileds'); function save_ex_category_fileds($term_id) { if(isset($_POST['sample'])) { update_term_meta( $term_id, 'sample', $_POST['sample'] ); } } |
アクションフックの「create_term」と「edited_term」にタームのメタ情報を保存する処理を記述しました。
「create_term」はカテゴリー(ターム)を新規追加した時、「edited_term」はカテゴリー(ターム)を編集した時に動く処理です。
以上でカテゴリーにメタ情報を持たせることができます。
よかったら活用してみてください。
コメントを残す