カルーセルを人気順で表示する方法

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

はじめに

カルーセルはデフォルトで人気記事を表示しますが、その並び順は以下の通りで、必ずしも人気順ではありません。

  • ランダム
  • 投稿日(降順)
  • 更新日(降順)

そこで、記事を人気順に並べ替え、各カードにランキング表示を追加します。

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

完成イメージ

実装手順

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

  • ラベル
    Cocoon設定

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

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

    以下のコードをfunctions.phpに追加します。
    カルーセルを人気順に並び替え、先頭に固定表示とした投稿は解除します。

    add_filter('cocoon_carousel_args', function ($args) {
      // 人気記事が有効な場合
      if (is_carousel_popular_posts_enable()) {
        // 表示を人気順に設定
        $args['orderby'] = 'post__in';
    
        // 先頭固定表示の投稿を無視
        $args['ignore_sticky_posts'] = true;
      }
    
      return $args;
    });

ランキング表示を追加する方法

記事を人気順に並べ替えを拡張して、各カードにランキング表示を追加します。

実装手順

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

  • ラベル
    PHPを追加

    以下のコードをfunctions.phpに追加します。
    各カードにランキング(carousel-no)を追加します。

    add_filter('cocoon_part__tmp/carousel-entry-card', function ($content) {
      static $i = 1;
    
      return preg_replace('/(<\/article>)/i', '$1<div class="carousel__number">' . $i++ . '</div>', $content);
    });
  • ラベル
    CSSを追加

    以下のコードをstyle.cssに追加します。

    .carousel-entry-card-wrap {
      position: relative;
    }
    
    .carousel__number {
      background-color: #333;
      color: #fff;
      font-size: 12px;
      line-height: 1.5em;
      position: absolute;
      right: 0;
      text-align: center;
      top: 0;
      width: 1.5em;
      z-index: 1;
    }

さいごに

今回の方法を使えば、カルーセルを人気順に表示し、各カードにランキングを追加することができます。
この仕組みにより、ユーザーにとって興味深いコンテンツを効果的に提供し、サイトの魅力を高めることができるでしょう。

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