WordPressのカスタム投稿タイプにタグ機能を追加する方法

wordpressのカスタム投稿タイプを使い始めたばかりの方は、タグ付け機能がないと困ったことはないでしょうか。Custom Post Type UIなどのカスタム投稿タイプを設定するプラグインを使っても、カテゴリーかタグのどちらかの機能を使うか選択するようになっています。

今回はプラグインを使わずにカスタム投稿タイプに、タグ付け機能を追加する設定方法を紹介していきます。これからカスタム投稿タイプを使う方や、使い始めたばかりの人は、参考にしていただければと思います。

カスタム投稿タイプにタグ付け機能を追加する

下記コードをfunction.phpに適用するとカスタム投稿タイプにタグ付け機能を追加できます。

add_action( 'init', function () {
    register_taxonomy( 'post_tag', [ 'post', 'カスタム投稿タイプ名' ],
        [
            'hierarchical' => false,
            'query_var'    => 'tag',
        ]
    );
});
add_action('pre_get_posts', function ($query){
    if ( is_admin() && ! $query->is_main_query() ) {
        return;
    }
    if ( $query->is_category() || $query->is_tag() ) {
        $query->set('post_type', ['post','カスタム投稿タイプ名']);
    }
});

カスタム投稿タイプ名と記載されている箇所は、ご自身が命名して作成したカスタム投稿タイプ名を適用してください。wordpressの管理画面上で、指定のカスタム投稿タイプの投稿画面の右側サイドにタグ付け機能が追加されているか確認してください。表示されていましたら、タグ付け機能の適用に成功しています。

注意していただきたいところは、上記コードはPHP5.4以上でないと動作しないので、適用されない場合はPHPのバージョンを確認してください。
※おそらくPHP5.6以前のサーバーは少なくなってきているので、大丈夫だと思いますが・・・

カスタム投稿一覧(管理画面)にタグの項目を追加する

次に通常の投稿一覧(管理画面)のように、タグの適用項目を表示する方法もお伝えします。
下記コードをfunction.phpに適用してください。

function add_tag_post_column_title( $columns ) {
    $columns[ 'slug' ] = "タグ";
    return $columns;
}
function add_tag_post_column( $column_name, $post_id ) {
    if( $column_name == 'slug' ) {
        $tags = get_the_tags();
        if($tags){
            foreach ( $tags as $tag ) {
                echo $tag->name .' ';
            }
        }
    }
}
add_filter( 'manage_カスタム投稿タイプ名_posts_columns', 'add_tag_post_column_title' );
add_action( 'manage_カスタム投稿タイプ名_posts_custom_column', 'add_tag_post_column', 10, 2 );

カスタム投稿タイプ名となっている箇所は、タグ付け機能を適用したカスタム投稿タイプ名を入力してください。カスタム投稿タイプ一覧(管理画面)にタグの項目が追加されているのを確認できましたら、適用が成功しています。

カスタム投稿タイプにタグ機能を追加する方法まとめ

WordPressのカスタム投稿タイプにタグ機能を追加する方法を紹介してきました。

通常のブログ投稿であまりタグ付け機能を使わないのに、なぜかカスタム投稿タイプでタグ付け機能を使う仕事が多々あるのは謎です。いざカスタム投稿タイプでタグを使おうと思ったときに、実装方法がわからない場合には活用していただければと思います。

タグ一覧を出力をする方法は、下記記事を参考にしてください。
↓↓↓↓

おすすめの記事