Because We Love Happy Coding

フリーライターからエンジニア × 講師。発信力だけあり余ってる感じ

WordPressの記事を管理するならカスタムタクソノミーで

今日もまたコーディング。だって僕らはHappy Codingが大好きだから。

目次

古い記事のHTML修正などをしていきたいと思っている。記事の移行でダメになったHTMLもあるし、そもそも当時のHTMLの理解が悪かったこともある。面倒だが少しずつリファクタリングしないと、サイトの評価が上がらない。

しかし既にWordPressにアップされた記事を弄っていると、どの記事を修正済みだかわからなくなる。いちいち開いて修正済みかどうか確認するのは面倒だし時間の無駄だ。かといってExcelで管理するのも面倒。何かもっといい手があるのでは…

そこでふと、記事整理用のカスタムタクソノミーを作ればいいことに気づいた。そもそも普段は、タクソノミーを表示するためにわざわざテンプレートを弄ってるんだから、テンプレートをいじらなければ、カスタムタクソノミーは管理画面でだけ見えるのだ。

環境

  • WordPress5.2
  • Custom Post Type UI

カスタムタクソノミーを作る

最近はコードを書くのが面倒で、Custom Post Type UIをすぐ導入してしまう。ほとんど全部のWordPressに入れる。たいてい、遅かれ早かれ使うからだ。

名前は「管理用」でも何でもいい。

管理画面にカラムを作る

これはCustom Post Type UIで設定するだけですぐできる。

左メニューの CPT UI > タクソノミーの追加と編集 を選んで、「タクソノミーの編集」タブを開く。

「管理画面でカラムを表示」という設定項目があるので、それをONにすれば良い。

これで記事の一覧に「管理用」列が表示される。

タクソノミーの絞り込みをfunctions.phpに実装する

列が表示されると並べ替えができるようになるので、それだけでもなんとか管理はできるんだけど、やっぱり絞り込みをしたい。

webで情報を探して、こんなスクリプトでいいらしい、というのをつきとめた。

add_action( 'restrict_manage_posts', 'add_custom_taxonomies_term_filter' );
function add_custom_taxonomies_term_filter() {
  global $post_type;
  if ( $post_type == 'post' ) {
    $taxonomy = 'kijiwo';
    wp_dropdown_categories( array(
      'show_option_all' => 'すべてのカテゴリー',
      'orderby' => 'name',
      'selected' => get_query_var( $taxonomy ),
      'hide_empty' => 0,
      'name' => $taxonomy,
      'taxonomy' => $taxonomy,
      'value_field' => 'slug',
    ) );
  }
}

カテゴリはどう分ける?

「修正が必要な記事」と、「既に完了した記事」を分けるためのタクソノミーを決める。

完了したものは「済 done」でいいかと想う。

これから修正したいものについては、やはりアクセスの多い記事から優先して着手をしたい。そこで「☆☆☆☆ star4」「☆☆☆★ star3」のようにつけていくことにした。これなら並べ変えた時にもきちんと優先度の高いものから並べることができる。

参考記事