「新着記事」の投稿をコメント数順で表示する方法

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

記事に記載したコードは、スキンに追加されています。

はじめに

以下の質問に回答します。

Cocoonには、閲覧数(人気順)で表示するショートコード(ウィジェット)が備わっていますが、コメント数順で表示する機能はありません。
例えば、閲覧数よりもコメント数が多い投稿を順番に表示したい場合があるかと思います。

そこで、new_listショートコードを使用して、投稿をコメント数順で表示します。

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

使用方法

actionオプションを追加します。

[new_list action="comment"]

実装手順

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

カード表示数にコメント数ゼロの投稿も含める場合

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

コメントありの投稿が表示件数に満たない場合、不足分としてコメント数ゼロの投稿も、日付順で補完して表示されます。

add_filter('widget_entries_args', function ($args) {
  if (!empty($args['action']) && $args['action'] === 'comment') {
    $args['orderby'] = [
      'comment_count' => 'DESC',
      'date'          => 'DESC',
    ];
  }

  return $args;
});

カード表示数にコメント数ゼロの投稿を含めない場合

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

コメントがある投稿のみを表示します。

// 新着記事のクエリを設定
add_filter('widget_entries_args', function ($args) {
  if (!empty($args['action']) && $args['action'] === 'comment') {
    $args['orderby'] = [
      'comment_count' => 'DESC',
      'date'          => 'DESC',
    ];
    $args['filter_comments'] = true;
  }

  return $args;
});


// コメント数で絞り込む
add_filter('posts_where', function ($where, $query) {
  if ($query->get('filter_comments')) {
    global $wpdb;
    $where .= " AND {$wpdb->posts}.comment_count > 0";
  }

  return $where;
}, 10, 2);

参考:「新着情報」の投稿をコメント数順で表示する方法

「新着情報」も同様に、コメント数順で並べ替えることができます。

使用方法

actionオプションを追加します。

[info_list action="comment"]

実装手順

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

add_filter('get_info_list_args', function ($args) {
  if (isset($args['action']) && $args['action'] === 'comment') {
    $args['orderby'] = [
      'comment_count' => 'DESC',
      'date'          => 'DESC',
    ];
  }

  return $args;
});

さいごに

今回紹介した方法を使えば、コメント数に基づいて投稿を表示することができます。
これにより、コメントが多く活発に議論されている投稿を上位に表示させることができ、訪問者にとってもより興味深いコンテンツを目にすることができます

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