Blogブログ

TORAT | 2021.7.19

wordpressプラグインなし、カテゴリー機能を最強カスタマイズ

  • wordpress
  • コピペ

wordpressのカテゴリー機能を最大限に生かすカスタマイズを行いたいと思います。

やりたいこと

  • カテゴリーの表示名を変更する
  • カテゴリー登録時の入力フィールドを追加する(いわゆるカスタムフィールドの追加)
  • 追加したフィールドをフロントで表示させる
このWordpressカテゴリー登録ページをいじくり回したい

カテゴリー登録の表示名を変更する

デフォルトでカテゴリーという表示になっているところの名前を変更したいと思います。

サイドメニューのカテゴリー表示を変更

まずはサイドメニューの表示名を変更します。change_post_label関数を使って任意の表示へ変更します。

ではfunctions.phpへコードを追加していきます。

functions.phpを修正する場合は、バックアップを取っておくようにしましょう。

//functions.php
function change_post_label() {
  global $menu;
  global $submenu;
  $submenu['edit.php'][15][0] = '地域登録';//変更する名前
}
カテゴリ=>地域登録へ変更されました

wordpressカテゴリー登録ページの表示名を変更する

続きましてわかりやすいようにカテゴリー登録ページ内の諸々の表示名を変えていきます。

こちらの変更はchange_taxonomies_label関数を用います

function change_taxonomies_label() {
  global $wp_taxonomies;
  $labels = $wp_taxonomies['category']->labels;
  $labels->name = '地域登録';
  $labels->singular_name = '地域';
  $labels->search_items = '地域を検索';
  $labels->all_items = '地域一覧';
  $labels->parent_item = '親地域';
  $labels->parent_item_colon = '地域:';
  $labels->edit_item = '地域の編集';
  $labels->view_item = '地域を表示';
  $labels->update_item = '地域を更新';
  $labels->add_new_item = '地域を追加';
  $labels->new_item_name = '地域名';
  $labels->not_found = '見つかりませんでした。';
  $labels->no_terms = 'ありません';
}
add_action( 'init', 'change_taxonomies_label' );
カテゴリ登録ページの諸々の表示名が変更されました

wordpressカテゴリー登録に入力フィールドの追加

それでは次にカテゴリー登録に入力フィールドを追加してみます。

フィールド追加時に必要なこと

  • 入力フィールドを表示させる(表示箇所はカテゴリーの登録ページ、カテゴリーの編集ページ)
  • 入力値を保存する
  • 入力値の編集を有効にする

今回は、「都道府県」「タイトル」「サブタイトル」の3項目を追加してみます。

functions.phpへコードを追加します。

// カテゴリのカスタマイズ
function get_categor_meta_ex(){
    return [
        'prefecture' => '都道府県',
        'title' => 'タイトル',
        'subtitle' => 'サブタイトル',
    ];
}
function category_add_form_fields($tag){
    foreach (get_categor_meta_ex() as $key => $value){
        echo '<div class="form-field form-required term-name-wrap"><tr class="form-field"><th><label for="extra_text">'.$value.'</label></th><td>
                    <input type="text" name="Cat_meta['.$key.']" size="25" value="" /></td></tr></div>';
    }
};
function category_edit_form_fields($tag){
    $cat_id = $tag->term_id;
    $cat_meta = get_option( "category_$cat_id");
    foreach (get_categor_meta_ex() as $key => $value){
        echo '<tr class="form-field"><th><label for="extra_text">'.$value.'</label></th><td><input type="text" name="Cat_meta['.$key.']" size="25" value="'.$cat_meta[$key].'" /></td></tr>';
    }
};
add_action('category_add_form_fields','category_add_form_fields');
add_action('category_edit_form_fields','category_edit_form_fields');
function save_category($category_id){
    $cat_meta = get_option( "category_$category_id");
    $cat_keys = array_keys($_POST['Cat_meta']);
    foreach ($cat_keys as $key){
        if (isset($_POST['Cat_meta'][$key])){
            $cat_meta[$key] = $_POST['Cat_meta'][$key];
        }
    }
    update_option( "category_$category_id", $cat_meta );
};
add_action ( 'edited_term', 'save_category');
add_action ( 'created_term', 'save_category');
add_action( 'init', 'my_add_pages_categories' ) ;
function my_add_pages_categories()
{
    register_taxonomy_for_object_type( 'category', 'page' ) ;
}
add_action( 'pre_get_posts', 'my_set_page_categories' ) ;
function my_set_page_categories( $query )
{
    if ( $query->is_category== true && $query->is_main_query()){
        $query->set( 'post_type', array( 'post', 'page', 'nav_menu_item' )) ;
    }
}
はい、とうわけで追加されました。これで十分ですね。

追加されたフィールドに値を入力します。正しく保存されれば完璧です。

新規追加を押下して値が保存されれば成功です

違いが分かりにくいのですが、カテゴリー編集画面も見ていきましょう。

登録ページと同じように追加フィールドが表示されていればOKですね。

編集ページにも同じようにフィールドが追加されています

カスタムフィールド入力値を表示する

カテゴリー登録時に追加したフィールドをフィールドをフロントで表示してみます。

表示させたい箇所のループ内へコードを追加します。

    <?php
        $categories = get_the_category();
        $cat_meta = [];
        foreach( $categories as $category ){
            $category_meta = get_option("category_$category->term_id");
        }
    ?>

値の出力は以下のようにしてみます。

<h2><?php echo $category_meta["prefecture"]; ?></h2>
<h2><?php echo $category_meta["title"]; ?></h2>
<h2><?php echo $category_meta["subtitle"]; ?></h2>

フロントで出力されたか確認します。

カテゴリーでの入力値が表示されていれば成功です。

まとめ

今回は、カテゴリーをカスタマイズする方法をご紹介しました。

カテゴリー機能をうまく使うことで、wordpressの特性をさらにうまく使うことができそうです。

この記事を書いた人

TORAT 管理者

関連記事

Recommend愛されているブログ