WordPressで「カスタム投稿タイプ」というのがあります。これは、デフォルトでは利用できませんがWordPressで用意されている機能で、functions.phpへの追記、あるいはプラグインを利用することでも利用できます。これを利用する際は、通常の「投稿」メニューは利用しないほうがよいのではと思う(当サイトは実際にそうしている)ので、それについて理由を記載しておきます。

「カスタム投稿タイプ」を利用する場合は通常の「投稿」は使わないという選択肢

カスタム投稿タイプを利用する理由

例えば、

  • お知らせ
  • 商品情報
  • ブログ

を随時更新していく形を取りたいと望むとします。

WordPressの「投稿」メニューが活躍できますが、どのように分けていくとよいでしょうか?
通常の「投稿」メニューも、ひとつの投稿に対して「カテゴリー」と「タグ」をそれぞれつけることができますので、「お知らせ」「商品情報」「ブログ」をカテゴリーで分ける、という手もあります。
デフォルトではパーマリンク(URL)が以下のようになります。

www.example.com/投稿単位のスラッグ/

パーマリンクにカテゴリーを加える設定もあるので、以下のようにすることも可能です。

www.example.com/カテゴリー/投稿単位のスラッグ/

カテゴリーを利用しているので、さらにジャンル分けする手段としてはタグが残されるのみです。
それでも十分のような感じはしますが、投稿数が多くなっていくと、すべてが「投稿」メニューに入るので、ごちゃごちゃしてくるというのがあると思います。

カスタム投稿タイプを使うと、
 ・「投稿」
 ・「お知らせ」
 ・「商品情報」
 ・「ブログ」
のように最上位のメニューから分けることができて、
「お知らせ」などの中で、さらに「カテゴリー」と「タグ」が使えるようになります。

※ちなみにカスタム投稿タイプを使いだすと、「カテゴリー」と「タグ」という用意された名称はなくなり、「タクソノミー」という器に対して、「カテゴリー」などの名称を付けていく形になります。詳しくはこちらをご参照ください。

カスタム投稿タイプを利用すると、パーマリンクにカスタム投稿タイプ名(スラッグ)を出すことができるようにもなります。下記はカテゴリーをパーマリンクに表示している例ですが、そこを表示しないようにすることもできます。私はカテゴリーをパーマリンクに出すことは推奨しません。詳しくはリンク先をご覧ください。

✖:非推奨のパーマリンク設定

www.example.com/news(お知らせ)/カテゴリー/投稿単位のスラッグ/

〇:推奨のパーマリンク設定

www.example.com/news(お知らせ)/投稿単位のスラッグ/

「カスタム投稿タイプ」を使うなら「投稿」メニューは使わないほうが良い理由

上述のように、通常の「投稿」と「カスタム投稿タイプ」では設定できるパーマリンクが違ってきたり、「カテゴリー」と「タグ」が「タクソノミー」になったりでややこしくなってきます。画面に表示される文言をカテゴリーとタグにはできるのですが、用意されている関数名などプログラミングにおける扱い方が違い、色々と制作者側での取り違いによる不具合が出たり、検討に時間がかかるリスクが生まれます。

そして、通常の「投稿」メニューはfunctions.phpに以下を記述することで非表示にすることができます。
※非表示にするだけで、URLにアクセスすると利用できてしまいますので、その点は留意ください。

function remove_menus() {
  remove_menu_page( 'edit.php' ); 
}
add_action( 'admin_menu', 'remove_menus' );

よって、通常の「投稿」だけを使うという選択肢か、「カスタム投稿タイプ」だけを使うという選択肢のどちらかにする運用が望ましいと思う次第です。

いずれ「カスタム投稿タイプ」を使いたくなる可能性を考えて、例え「ブログ」しかなかったとしても、私がお客様に提供する際は、最初から「投稿」メニューを非表示にして「カスタム投稿タイプ」に置き換える、というのが親切だと思っています。

WordPressは元々、ブログのみから始まったCMSで、そこから、企業サイトなどにも活用できるように発展してきています。そういった経緯でこうなっているだけなので、もはや通常の投稿タイプというのは、以前からそれを使っているユーザーのために残しているだけのような気もします(推測です)。

カスタム投稿タイプを用いるときの留意点

カスタム投稿タイプを用いると、管理画面の投稿一覧において通常の投稿タイプでは表示されるカテゴリー(タクソノミー)によるフィルターがデフォルトでは非表示になります。

ただ、以下をfuntcions.phpに記述すれば表示されます・・と言い切りたいところなのですが、フィルターでタームを選択後、一度「絞り込み」ボタンを押しただけだと何も表示されず、もう一度「絞り込み」ボタンを押すと表示されるという現象が当方では確認されています。

調べると同じことを質問している人がいて、解決してないので、バグなんじゃないかと思ってます・・まあ2回押せば、フィルタされるので・・。

restrict_manage_postsフック関数を用いています。

function add_term_filter( $post_type ) {
   if($post_type == 'カスタム投稿タイプ名') :
      $taxonomy = 'タクソノミー名';
      wp_dropdown_categories(array(
        'show_option_all' => 'カテゴリー指定なし',
        'orderby'         => 'name',
        'selected'        => get_query_var($taxonomy),
        'name'            => $taxonomy,
        'taxonomy'        => $taxonomy,
        'value_field'     => 'slug',
      ));
   endif;
 }
 add_action('restrict_manage_posts', 'add_term_filter', 10, 1);

まとめ

WordPressを利用する場合は、「カスタム投稿タイプ」の存在を把握の上、それを将来的にでも利用する可能性を考えておくのが望ましいです。私がお客様にWordPressでサイト提供する場合は、最初から「投稿」メニューを非表示にすること、そのメリットと、デメリットがないという点をお伝えします。詳しく聞きたいという方、ぜひお問い合わせください!

著者のイメージ画像

BringFlower|稲田 高洋

2003年から大手総合電機メーカーでUXデザインプロセスの研究、実践。UXデザイン専門家の育成プログラム開発。SEOにおいても重要なW3Cが定めるWeb標準仕様策定にウェブアクセシビリティの専門家として関わる。2010~2018年に人間中心設計専門家を保有。その後、不動産会社向けにSaaSを提供する企業の事業開発部で複数サービスを企画、ローンチ。CMSを提供し1000以上のサイトを分析。顧客サポート、サイト運営にも関わる。2022年3月にBringFlowerを開業し、SEOコンサル、デザイン、ウェブ制作を一手に受ける。グッドデザイン賞4件、ドイツユニバーサルデザイン賞2件、米国IDEA賞1件の受賞歴あり。