【WordPress】カスタムタクソノミー名に「categories」を使ってはいけない

  • WordPress

WordPress の予約語としてはいろいろあるのですが、カスタムタクソノミーを登録する時に「categories」という名前にすると、やっかいなことになるかもしれません。

登録したカスタムタクソノミーのタームが、ターム編集画面では表示されるのに、投稿編集画面で表示されないという事象が発生しました。その原因をメモしておきます。

投稿編集画面で、カテゴリーが表示されない

まず、もともと WordPress のデフォルトのタクソノミーとして「category」があります。一番最初に WordPress をインストールしたときに存在する「投稿」に紐づく「カテゴリー」がそうです。

ここで、カスタムタクソノミー「categories」を作成し、「投稿」に紐づけてみます。

「categories」に適当にいくつかタームを登録した後「投稿」の記事を確認してみると、「categories」に登録したタームではなくデフォルトのタクソノミー「category」に登録したものが表示されます。

原因

これは、おそらく WordPress REST API によるもので、デフォルトの「category」は、REST API で引っ張ってくる時にエンドポイントが

/wp-json/wp/v2/categories

になるためです。post もそうですが、基本的に複数形になります。カスタムタクソノミー「categories」のエンドポイントも同じように

/wp-json/wp/v2/categories

になるため、重複してしまいます。

優先度などについて詳しく調べていませんが、カスタムタクソノミーに「categories」や、カスタム投稿タイプに「posts」のような命名をするのは避けたほうが無難です。

たまたま触っていた WordPress で不具合が見つかり、その原因を究明していたところ上記の事象になることを発見しました。