WordPressのカスタム投稿タイプ ― 投稿タイプキーには文字数制限がある

WordPress で独自の投稿タイプ(CPT: Custom Post Type)を作成する際、register_post_type() 関数を利用します。
しかし、このとき指定する 投稿タイプキー(第一引数)には 1〜20文字の制限 があることをご存じでしょうか?


投稿タイプキーの制限とは?

投稿タイプキーは、WordPress が内部でカスタム投稿タイプを識別するための名前です。
次のルールがあります。

  • 1文字以上20文字以内
  • 英小文字とアンダースコア( _ )のみ使用可能
  • 大文字・スペース・日本語は使えない

もし制限を超えた場合、以下のような Notice が表示されます。

Notice: 関数 register_post_type が誤って呼び出されました。
投稿タイプ名の長さは1から20文字でなければいけません。

具体例

たとえば「レシピコレクション」というカスタム投稿タイプを作りたいとします。
キーを長く指定してしまうとエラーになります。

NG例(キーが長すぎる)

register_post_type('my_favorite_recipe_collection_posts', [
    'label' => 'レシピコレクション',
    'public' => true,
]);

このキーは 20文字を超えているため、登録できません。


OK例(短縮したキー)

register_post_type('recipes', [
    'label' => 'レシピコレクション',
    'public' => true,
]);

このように、内部キーは短くシンプルにして、管理画面に表示される「ラベル」で正式名称を表現するのが正しい方法です。
これにより、システム上の安定性と、ユーザーにとっての分かりやすさを両立できます。


なぜ制限があるのか?

投稿タイプキーは WordPress 内部で幅広く利用されます。

  • データベースのクエリ変数
  • URL リライトルールの識別子
  • 管理画面での参照

長すぎるキーを使用すると、内部処理やデータベース構造に不具合を生じる恐れがあるため、WordPress が制限を設けています。


まとめ

  • 投稿タイプキーは 1〜20文字以内
  • 使用できるのは 英小文字とアンダースコアのみ
  • キーは短く、ラベルで正式名称を表示するのがベストプラクティス

コメント

タイトルとURLをコピーしました