カスタム投稿を追加する方法

Cocoonカスタマイズ集
この記事は約5分で読めます。
記事内に広告が含まれています。

はじめに

カスタム投稿タイプは、WordPressの便利な機能の一つで、デフォルトの「投稿」や「ページ」とは異なる種類のコンテンツを管理することができます。
これを利用することで、特定のコンテンツを他の投稿と区別し、効率的に整理できます。

Cocoonはカスタム投稿タイプに対応しており、カスタム投稿タイプを管理画面に追加すれば、簡単に表示することができます。

この記事では、その方法について説明します。

カテゴリー、タグ、カスタムタクソノミーの違いについて

カスタムタクソノミー、カテゴリー、タグは、WordPressでコンテンツを分類するための手段ですが、それぞれに特徴があります(表1参照)。

主な違い
特徴カテゴリータグ カスタムタクソノミー
デフォルトで提供されているかはいはいいいえ (ユーザー定義)
階層構造はいいいえカスタマイズ可能
使用目的主に分類(大まかな分類)主に関連するキーワードや内容特定のコンテンツに基づく独自の分類
投稿タイプの対応投稿(Post)投稿(Post)任意の投稿タイプ
柔軟性限定的(階層の分類)限定的(自由に設定)高い(任意の階層構造、タクソノミー名など)

完成イメージ

カスタム投稿
項目ラベルスラッグ
カスタム投稿タイプお知らせnews
カスタムタクソノミーお知らせジャンルnews_genre

実装手順

以下の手順で実装します。

  • ラベル
    PHPを追加(管理画面にカスタム投稿メニューを追加)

    以下のコードをfunctions.phpに追加します。

    カスタム投稿タイプnewsと、カスタムタクソノミーnews-genreを管理画面に追加します。

    add_action('init', function () {
      $args = [
        'comment_status' => 'open',                     // コメントを許可
        'has_archive'   => true,                        // アーカイブページを作成
        'label'         => 'お知らせ',                  // 管理画面に表示される名前
        'menu_icon'     => 'dashicons-info-outline',    // 管理画面メニューのアイコン
        'menu_position' => 5,                           // 管理画面のメニュー位置
        'public'        => true,                        // 投稿タイプを公開
        'show_in_rest'  => true,                        // Gutenbergを有効
        'supports'      => [                            // 投稿に表示する項目
          'comments',                                   // コメント機能を有効
          'custom-fields',                              // カスタムフィールドを有効
          'editor',                                     // 投稿に編集
          'revisions',                                  // 投稿履歴を有効
          'thumbnail',                                  // 投稿にサムネイル画像
          'title',                                      // 投稿にタイトル
        ],
      ];
    
      register_post_type('my_news', $args);
    
      // カスタムタクソノミーを追加
      $tax_args = [
        'hierarchical' => false,                        // 階層なし(タグ分類)
        'label'        => 'お知らせジャンル',           // 管理画面での表示
        'show_in_rest' => true,                         // ブロックエディタ表示
      ];
    
      register_taxonomy('my_news_genre', 'my_news', $tax_args);
    });
    
  • ラベル
    PHPを追加(投稿一覧にカスタム投稿含め表示)

    以下のコードをfunctions.phpに追加します。

    add_action('pre_get_posts', function ($query) {
      if (!is_admin() && $query->is_main_query() && !is_page()) {
        // 全ての投稿タイプを対象
        $post_types = get_post_types(array('public' => true));
        $query->set('post_type', $post_types);
      }
    });

    投稿一覧を表示するクエリにカスタム投稿タイプnewsを追加し、デフォルトの投稿と一緒に表示します。

カスタム投稿の表示について

Cocoonには、カスタム投稿タイプを取得するための関数が用意されています。

また、single-news.phpやarchive-news.phpが存在しない場合、WordPressはデフォルトで single.phpやindex.phpを使用します。
デフォルトと異なるスタイルやレイアウトにしたい場合のみ、テンプレートを作成する必要があります。

なお、「クエリーループ」ブロックを使用すれば、コードを触らずに独自のページレイアウトを簡単に作成できます。

パーマリンク設定について

カスタム投稿を追加した場合、必ず設定→パーマリンクで設定を保存しなければ、カスタム投稿が正しく表示されません。
これにより、WordPressが新しい投稿タイプに対する適切なリライトルールを生成します。

さいごに

今回紹介した方法を使えば、Cocoonテーマにおいてカスタム投稿タイプやカスタムタクソノミーを問題なく表示できるようになります。
これにより、特定のコンテンツを効率よく管理でき、サイトの柔軟性が大きく向上します。

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