コメント欄や「最近のコメント」ウィジェットに書き込みから一定期間「NEW」マークを表示する方法

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

はじめに

訪問者同士のコミュニケーションを活発にするため、新しいコメントがついたことを視覚的に伝えることは非常に効果的です。

そこで、標準のコメント欄だけでなく、サイドバーなどにある「最近のコメント」ウィジェットにも、書き込みから一定期間「NEW」を自動表示させるようにします。

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

完成イメージ

コメント欄
「最近のコメント」ウィジェット

実装手順

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

  • ラベル
    PHPを追加

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

    /**
     * コメントが新着期間内か判定
     *
     * @param int|string $comment_id コメントID
     * @return bool 新着の場合はtrue、そうでない場合はfalse
     */
    if (!function_exists('is_comment_new')):
    function is_comment_new($comment_id) {
      $comment_obj = get_comment($comment_id);
    
      if (!$comment_obj) {
        return false;
      }
    
      // NEWマークを表示する日数(例: 3日以内)
      $days = 3;
    
      $now = current_time('U');
      $comment_time = strtotime($comment_obj->comment_date);
    
      return ($now - $comment_time) < ($days * DAY_IN_SECONDS);
    }
    endif;
    
    
    // コメントリストのクラスを変更
    add_filter('comment_class', function ($classes, $class, $comment_id) {
      if (is_comment_new($comment_id)) {
        $classes[] = 'comment--new';
      }
    
      return $classes;
    }, 10, 3);
    
    
    // テンプレート(最近のコメント)を変更
    add_filter('cocoon_part__tmp/widget-recent-comments', function ($content, $name, $args) {
      $comment_id = $args['comment']->comment_ID;
    
      // 現在時刻が期限内の場合はクラスを追加
      if (is_comment_new($comment_id)) {
        $content = preg_replace('/(class=")(recent-comment-link)/', '$1comment--new $2', $content);
      }
    
      return $content;
    }, 10, 3);
  • ラベル
    CSSを追加

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

    .comment--new {
      .comment-author .fn,
      .recent-comment-author {
        &::before {
          background-color: #ff0000;
          color: #fff;
          content: 'NEW';
          font-size: 8px;
          font-weight: normal;
          margin-right: 5px;
          padding: 0 3px;
          vertical-align: middle;
        }
      }
    }

さいごに

今回紹介した方法を使えば、標準のコメント欄だけでなく、サイドバーの「最近のコメント」ウィジェットにも自動で「NEW」マークを表示できるようになります。
サイトの回遊率アップやコメントの活性化にぜひ役立ててください。

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