概要説明
特定のカテゴリーのという処理を行う際にID決め打ちで対応したくない場合などにカテゴリーに情報を追加させて判断させることができるようになるカスタマイズ。カテゴリー説明、メモ欄、カラーコード設定項目など使い方次第です。
~ 目次 ~
新規登録画面、編集画面、保存処理 ( テキストエリア )
functions.php
/*---------------------------------------------------- カテゴリー編集ページに項目を追加 ( テキストリア ) ----------------------------------------------------*/ if ( !function_exists( 'add_category_fields' ) ){ // 新規登録ページ function add_category_fields( $tag ) { echo '<div class="form-field term-memo-wrap">'; echo ' <label for="tag-memo">メモ欄</label>'; echo ' <textarea name="tag-memo" id="tag-memo" rows="5" cols="40"></textarea>'; echo ' <p>項目説明</p>'; echo '</div>'; } add_action ( 'category_add_form_fields', 'add_category_fields'); // 編集ページ function edit_category_fields( $tag ) { $id = $tag->term_id; $meta = get_option( 'cat_' . $id ); $memo_value = ''; if( isset ( $meta['tag-memo']) ) { $memo_value = esc_html($meta['tag-memo']); } echo '<tr class="form-field term-memo-wrap">'; echo ' <th><label for="tag-memo">メモ欄</label></th>'; echo ' <td><textarea name="tag-memo" id="tag-memo" rows="5" cols="40">'.$memo_value.'</textarea>'; echo ' <p>項目説明</p></td>'; echo '</tr>'; } add_action ( 'category_edit_form_fields', 'edit_category_fields'); // 保存処理 function save_category_fileds( $term_id ) { $post_key = 'tag-memo'; if ( isset( $_POST[$post_key] ) ) { $meta = get_option( 'cat_' . $term_id ); $meta[$post_key] = $_POST[$post_key]; update_option( 'cat_' . $term_id, $meta ); } } add_action ( 'create_term', 'save_category_fileds' ); // 新規登録時 add_action ( 'edited_term', 'save_category_fileds' ); // 編集時 }
カテゴリーページにて項目が追加されたことを確認
チェックボックスの項目を追加 ( 特定の条件判定用 )
functions.php
/*---------------------------------------------------- カテゴリー編集ページに項目を追加 ( チェックボックス ) ----------------------------------------------------*/ if ( !function_exists( 'add_category_fields' ) ){ // 新規登録ページ function add_category_fields( $tag ) { echo '<div class="form-field term-exclusion-wrap">'; echo ' <label for="tag-exclusion">関連記事除外カテゴリー</label>'; echo ' <input type="checkbox" name="tag-exclusion" id="tag-exclusion" value="1">'; echo ' <p>項目説明</p>'; echo '</div>'; } add_action ( 'category_add_form_fields', 'add_category_fields'); // 編集ページ function edit_category_fields( $tag ) { $id = $tag->term_id; $meta = get_option( 'cat_' . $id ); $exclusion_value = ''; if( isset ( $meta['tag-exclusion']) ) { if ( $meta['tag-exclusion'] == 1 ) { $exclusion_value = 'checked="checked"'; } } echo '<tr class="form-field term-exclusion-wrap">'; echo ' <th><label for="tag-exclusion">関連記事除外カテゴリー</label></th>'; echo ' <td><input type="checkbox" name="tag-exclusion" id="tag-exclusion" value="1" '.$exclusion_value.'>'; echo ' <p>項目説明</p></td>'; echo '</tr>'; } add_action ( 'category_edit_form_fields', 'edit_category_fields'); // 保存処理 function save_category_fileds( $term_id ) { $post_key = 'tag-exclusion'; $meta = get_option( 'cat_' . $term_id ); if ( isset( $_POST[$post_key] ) ) { $meta[$post_key] = $_POST[$post_key]; } else { $meta[$post_key] = ''; } update_option( 'cat_' . $term_id, $meta ); } add_action ( 'create_term', 'save_category_fileds' ); // 新規登録時 add_action ( 'edited_term', 'save_category_fileds' ); // 編集時 }
登録した項目を使う ( チェックボックス )
$exclusion_falg = 1; $meta = get_option( 'cat_' . $term_id ); if ( isset($meta['tag-exclusion']) ) { if ( $meta['tag-exclusion'] == 1 ) { $exclusion_falg = 0; } } // チェックボックスにチェックを付けた場合は除外 if ( $exclusion_falg ) { // 処理 }
追加したテキストエリア項目を表示
$meta = get_option( 'cat_' . $term_id ); if ( isset($meta['tag-memo']) ) { echo $meta['tag-memo']; }