WordPress
「カスタム投稿タイプ」を利用する場合は通常の「投稿」は使わないという選択肢
WordPressで「カスタム投稿タイプ」というのがあります。これは、デフォルトでは利用できませんがWordPressで用意されている機能で、functions.phpへの追記、あるいはプラグインを利用することでも利用できます。これを利用する際は、通常の「投稿」メニューは利用しないほうがよいのではと思う(当サイトは実際にそうしている)ので、それについて理由を記載しておきます。
カスタム投稿タイプを利用する理由
例えば、
- お知らせ
- 商品情報
- ブログ
を随時更新していく形を取りたいと望むとします。
WordPressの「投稿」メニューが活躍できますが、どのように分けていくとよいでしょうか?
通常の「投稿」メニューも、ひとつの投稿に対して「カテゴリー」と「タグ」をそれぞれつけることができますので、「お知らせ」「商品情報」「ブログ」をカテゴリーで分ける、という手もあります。
デフォルトではパーマリンク(URL)が以下のようになります。
www.example.com/投稿単位のスラッグ/
パーマリンクにカテゴリーを加える設定もあるので、以下のようにすることも可能です。
www.example.com/カテゴリー/投稿単位のスラッグ/
カテゴリーを利用しているので、さらにジャンル分けする手段としてはタグが残されるのみです。
それでも十分のような感じはしますが、投稿数が多くなっていくと、すべてが「投稿」メニューに入るので、ごちゃごちゃしてくるというのがあると思います。
カスタム投稿タイプを使うと、
・「投稿」
・「お知らせ」
・「商品情報」
・「ブログ」
のように最上位のメニューから分けることができて、
「お知らせ」などの中で、さらに「カテゴリー」と「タグ」が使えるようになります。
※ちなみにカスタム投稿タイプを使いだすと、「カテゴリー」と「タグ」という用意された名称はなくなり、「タクソノミー」という器に対して、「カテゴリー」などの名称を付けていく形になります。詳しくは次の記事をご参照ください。
カテゴリー、タグ、タクソノミー、タームの違いについてどこよりも分かりやすい解説を試みる
カスタム投稿タイプを利用すると、パーマリンクにカスタム投稿タイプ名(スラッグ)を出すことができるようにもなります。下記はカテゴリーをパーマリンクに表示している例ですが、そこを表示しないようにすることもできます。
✖:非推奨のパーマリンク設定
www.example.com/news(お知らせ)/カテゴリー/投稿単位のスラッグ/
〇:推奨のパーマリンク設定
www.example.com/news(お知らせ)/投稿単位のスラッグ/
私はカテゴリーをパーマリンクに出すことは推奨しません。詳しくは次の記事をご覧ください。
WordPressにおけるパーマリンク(URL)設定のおすすめ、理想と最適解に関する考察
「カスタム投稿タイプ」を使うなら「投稿」メニューは使わないほうが良い理由
上述のように、通常の「投稿」と「カスタム投稿タイプ」では設定できるパーマリンクが違ってきたり、「カテゴリー」と「タグ」が「タクソノミー」になったりでややこしくなってきます。画面に表示される文言をカテゴリーとタグにはできるのですが、用意されている関数名などプログラミングにおける扱い方が違い、色々と制作者側での取り違いによる不具合が出たり、検討に時間がかかるリスクが生まれます。
そして、通常の「投稿」メニューはfunctions.phpに以下を記述することで非表示にすることができます。
※非表示にするだけで、URLにアクセスすると利用できてしまいますので、その点は留意ください。
function remove_menus() {
remove_menu_page( 'edit.php' );
}
add_action( 'admin_menu', 'remove_menus' );
よって、通常の「投稿」だけを使うという選択肢か、「カスタム投稿タイプ」だけを使うという選択肢のどちらかにする運用が望ましいと思う次第です。
いずれ「カスタム投稿タイプ」を使いたくなる可能性を考えて、例え「ブログ」しかなかったとしても、私がお客様に提供する際は、最初から「投稿」メニューを非表示にして「カスタム投稿タイプ」に置き換える、というのが親切だと思っています。
WordPressは元々、ブログのみから始まったCMSで、そこから、企業サイトなどにも活用できるように発展してきています。そういった経緯でこうなっているだけなので、もはや通常の投稿タイプというのは、以前からそれを使っているユーザーのために残しているだけのような気もします(推測です)。
カスタム投稿タイプを用いるときの留意点
カスタム投稿タイプを用いると、管理画面の投稿一覧において通常の投稿タイプでは表示されるカテゴリー(タクソノミー)によるフィルターがデフォルトでは非表示になります。
ただ、以下をfuntcions.phpに記述すれば表示されます。おそらくはWordPress側でのバグが生じていたようなので、その旨ここに書いてましたが、気づいたら解消されてるようです。restrict_manage_posts
フック関数を用いています。
<?php
function add_term_filter( $post_type ) {
if($post_type == 'カスタム投稿タイプ名') :
$taxonomy = 'タクソノミー名';
wp_dropdown_categories(array(
'show_option_all' => 'カテゴリー指定なし',
'orderby' => 'name',
'selected' => get_query_var($taxonomy),
'hide_empty' => 0,
'name' => $taxonomy,
'taxonomy' => $taxonomy,
'value_field' => 'slug',
));
endif;
}
add_action('restrict_manage_posts', 'add_term_filter', 10, 1);
?>
まとめ
WordPressを利用する場合は、「カスタム投稿タイプ」の存在を把握の上、それを将来的にでも利用する可能性を考えておくのが望ましいです。私がお客様にWordPressでサイト提供する場合は、最初から「投稿」メニューを非表示にすること、そのメリットと、デメリットがないという点をお伝えします。詳しく聞きたいという方、ぜひお問い合わせください!