カルーセルにカスタム投稿を表示する方法

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

実装手順

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

例として、カスタム投稿タイプnewsカスタムタクソノミー(news_categoryや news_tag)ごとに、取得したいタームIDを設定します。

  • ラベル
    Cocoon設定

    表1に示す項目を設定をします。

    Cocoon設定
    設定大項目項目設定値
    カルーセルカルーセル設定カルーセルの表示
    人気記事オン
  • ラベル
    PHPを追加

    以下のコードをfunctions.phpに追加します。
    例として表示するカスタムタクソノミーをID=123、456に設定します。

    add_filter('cocoon_carousel_args', function ($args) {
      // 取得する投稿タイプを設定
      $post_type = 'news';
    
      // タクソノミーごとに指定するタームIDの設定
      $taxonomy_terms = [
        'news_genre' => [123, 456],
      ];
    
      // 最大表示数を継承
      $count = $args['posts_per_page'];
    
      // タクソノミークエリを作成
      $tax_query = [];
      foreach ($taxonomy_terms as $taxonomy => $terms) {
        $tax_query[] = [
          'taxonomy' => $taxonomy,      // 各タクソノミーを指定
          'field'    => 'term_id',      // タームIDで指定
          'terms'    => $terms,         // 設定したタームIDを適用
        ];
      }
    
      // 修正した引数を適用
      $args = [
        'post_type'      => $post_type, // カスタム投稿タイプを設定
        'posts_per_page' => $count,     // 投稿数を設定(元の値があれば継承)
        'tax_query'      => [
          'relation' => 'OR',           // いずれかの条件を満たす投稿を取得
          ...$tax_query
        ],
        'orderby'        => 'date',     // 投稿を日付順に並べる
        'order'          => 'DESC',     // 新しい投稿を先に表示
      ];
    
      return $args;
    });

さいごに

紹介した方法を使えば、カルーセルにカスタム投稿タイプの特定のタームに属する投稿を簡単に表示できるようになります。
これにより、ユーザーは興味のある情報にアクセスしやすくなり、サイトの魅力を高めることができるでしょう。

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