カテゴリー編集ページに任意の項目を追加

概要説明

特定のカテゴリーのという処理を行う際に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'];
}

WordPress Developer Resources

関連機能

  1. WordPressページ表示までの処理時間を管理者にだけ表示させる

  2. WordPress お問合せフォームの郵便番号に入力したら住所を自動で入力する機能を追加 ( Contact Form 7 )

  3. WordPress パンくずリスト表示用のショートコード

サイドバー

よく使うカスタマイズ

最近の記事

アニメの名言集

運命さんね
オレそいつ 嫌いなんだわ

ブラッククローバー
by ヤミ・スケヒロ

Profile

PAGE TOP
Amazon プライム対象