どうも、鶏です。
WordPressのカスタム投稿タイプってすこぶる便利ですよね。

通常の投稿とカスタム投稿タイプで同じカテゴリーやタグを使いたい時は、register_taxonomy() 関数で設定できます。

カスタム投稿タイプ(hoge, piyo)で通常の投稿と同じカテゴリーとタグを使う

これでカスタム投稿タイプでも、通常の投稿と同じカテゴリーとタグが使える。と、思ったら甘かった。

register_taxonomy()は規定値を無視する

3つ目の引数で設定値を指定するわけですが、これに書かれていないものは規定値ではなく、デフォルト値・・・つまり過去に設定したスラッグや名称もリセットされてしまう。これにより多くの問題が起きる。

今回ひっかかったのは、タグのリンクが正常に動作しなくなること。
WordPressのデフォルトのタグは タクソノミーが「post_tag」、スラッグが「tag」に設定されています。
上述の記述をすると、スラッグが「post_tag」にセットされ、タグの一覧のリンクURLも /tag/ から /post_tag/ に書き換わります。
すると、WordPressは通常のタグを /tag/として処理しているのかタグのページがおかしなことになってしまう。パーマリンク設定を変えても変化なし。

手軽に回避してみる

何か別の方法があるかもしれないけど、単純に規定値を変数に読み込んで全部 register することで回避した

taxonomyの規定値はget_taxonomy()で取得

まず、冒頭のコードの実行前と実行後で設定値がどう変わっているか比較してみよう

labels の中身なんか、実行の前後で設定値がかなり変わってますね。実際にコントロールパネルのいろんな箇所のラベルがおかしなことになります。

そこで、get_taxonomy()で規定値を入れてみると…

期待通りの結果が返ってくるはず。ぜひお試しあれ