[WP] 投稿画面からカテゴリーが消えた場合に確認する場所

WordPressの投稿画面から、ある日突然カテゴリーが行方不明になってしまった!新規投稿ページにも、投稿一覧にもいないし、投稿メニュー(画面左のメニュー欄)からもきれいさっぱり消えている!もしかしたら、カテゴリーに仕事をさせすぎたせいで、家出してしまったのかも!(ないない)

そんなとき、カテゴリーに帰ってきてもらう方法(チェックポイント)をいくつかご紹介します。

スポンサーリンク

カスタム投稿タイプを追加している場合

WordPressには、投稿タイプをカスタマイズできる「カスタム投稿タイプ」があります。カスタム投稿タイプというのは、簡単に言えばデフォルトの「投稿」機能を、カスタマイズして追加できる機能です。

この機能をプラグインを使って追加している場合は問題ないのですが、自分でfunctions.phpを編集して追加している場合、気付かないうちにカテゴリーを上書きしてしまっていることがあります。

例えば、以下のようにカスタム投稿タイプを追加し、そのカスタム投稿タイプ用にカテゴリーも追加している場合。

// カスタム投稿設定
register_post_type(
    // 投稿タイプ名
    'event_list',
    array(
        // 管理画面等で表示する投稿タイプのラベル名
        'labels' => array(
            'name' => __( 'イベント一覧' ),
            'singular_name' => __( 'イベント一覧' )
        ),
        'public' => true,
        'menu_position' => 6,
    )
);

// カスタムタクソノミー(分類)の追加
register_taxonomy(
    'event_category', // タクソノミーのスラッグ(URLの一部になる英語名)
    'event_list',     // タクソノミーを追加する対象の投稿タイプ名
    array(
        'label' => 'イベントカテゴリー', // 管理画面等で表示するタクソノミーのラベル名
        'hierarchical' => true,          // true:カテゴリー、false:タグ
        'query_var' => true,
        'rewrite' => true
    )
);

カスタムタクソノミーを追加する際に、スラッグで「category」という名前を使用してしまうと、標準の投稿機能のカテゴリーを上書きしてしまうので、結果、標準の投稿機能からカテゴリーが消えてしまいます。

「category」は予約語のようなものなので、上記の「event_category」のように前後に何か単語を付け、そのまま「category」を使わないように気を付けましょう!

ちなみに、カスタム投稿タイプが原因だった場合、今までに設定してきたカテゴリーは一応そのまま残りますが、記事を更新する際に今までのカテゴリー名は消えてしまいます。タクソノミーのスラッグを正しく修正した後で、再度カテゴリーを作成し設定していく必要があります。

タクソノミー(分類)機能をメニューごと削除している場合

デフォルトの投稿機能からタクソノミー(分類)機能を削除している場合、カテゴリーやタグなどが表示されなくなります。

functions.phpに、以下のような記述をしていませんか?

if( !empty( $wp_taxonomies['category']->object_type ) ){
    foreach( $wp_taxonomies['category']->object_type as $i => $object_type ){
        if( $object_type == 'post' ){
            unset( $wp_taxonomies['category']->object_type[$i] );
        }
    }
}

上記ではカテゴリーを削除していますが、$wp_taxonomies['category'] を $wp_taxonomies['post_tag'] に置き換えることで、タグを削除することもできます。

この処理を追加していると、投稿機能のカテゴリーやタグが消えてしまいますので、消したくない場合はコメントアウトしておきましょう。

タクソノミー(分類)機能をメニューごと削除している場合2

上記の方法以外に、unregister_taxonomy_for_object_typeという関数を使って表示を消す方法もあるようです。

functions.phpに、以下のような記述をしていませんか?

unregister_taxonomy_for_object_type( 'category', 'post' );

こちらも同様に、'category' を 'post_tag' に置き換えることで、タグを削除することもできます。

この処理を追加していると、投稿機能のカテゴリーやタグが消えてしまいますので、消したくない場合はコメントアウトしておきましょう。

表示オプションでチェックを外している

管理画面の「表示オプション」で、表示しないようにチェックを外していませんか?

「投稿一覧」や「新規投稿」で、画面右上にある「表示オプション▼」をクリックして、表示オプションメニューを表示してみてください。「カテゴリー」にチェックが入っていなければ、クリックしてチェックを入れてみてください。

さいごに

カテゴリーが消えてしまった(消してしまった)場合の対処法としては、上記4パターンでほぼ解決すると思います。

カスタム投稿タイプを追加するときなんかは、気付かないまま再度やってしまいそうなので、気を付けたいとオモイマス。

初稿:2019年5月20日