Số lượng comment biểu thị độ thành công của bài viết

WordPress: Hiển thị danh sách bình luận nhiều trong tháng bất kỳ

Xin chào các bạn, hiện tại ở trên mạng có rất nhiều đoạn code cho phép các bạn hiển thị danh sách thành viên bình luận nhiều trong tháng, nhưng do tôi thấy chúng kém bảo mật, kém khoa học quá nên tôi sẽ sửa đoạn code đó và chia sẻ cho các bạn nhằm giúp các bạn nhanh chóng hiển thị được danh sách thành viên bình luận !

Thực tế, hiển thị danh sách thành viên bình luận nhiều nhất trong tháng cũng là cách khuyến khích người dùng phấn đấu cho cái bảng xếp hạng ấy, nhìn cũng vui vui !

Sau đây là đoạn code đó:

function jamviet_top_comment_authors($amount = 5, $month = 'all') {
    global $wpdb;
    
    $ExtraSQL = '';
    
    if ( $month != 'all' ) {
        $month = (int)$month;
        if ( $month > 12 || $month < 1 ) {
            return;
        }
        $maxday = cal_days_in_month(CAL_GREGORIAN, $month, date('Y'));
        $ExtraSQL = sprintf('AND comment_date > \'%s\' AND comment_date  < \'%s\'', date("Y-$month-01 00:00:00", current_time('timestamp') ), date("Y-$month-$maxday 23:59:59", current_time('timestamp') ) );
    }
    $results = $wpdb->get_results( sprintf('
    SELECT
    COUNT(comment_author_email) AS comments_count, comment_author_email, comment_author, comment_author_url
    FROM %s
    WHERE comment_author_email != "" AND comment_type != "pingback" AND comment_approved = 1 %s
    GROUP BY comment_author_email
    ORDER BY comments_count DESC
    LIMIT %d', $wpdb->comments, $ExtraSQL, $amount) );
    
    
    if ( $results ) {
        $output = '<ul>';
        foreach($results as $result) {
            $output .= "<li><a href='". $result->comment_author_url ."' rel='nofollow'>". $result->comment_author ." (".$result->comments_count .")</a></li>";
        }
        $output .= '</ul>';
        return $output;
    }
    return false;
}

Đoạn code trên các bạn phải đặt ở file Functions.php nhé, sau khi thêm code xong các bạn có thể gọi ra ở bất kỳ nơi đâu:

// hiển thị ra
echo jamviet_top_comment_authors(5, 6);

Trong đó:

  1. Cái biến đầu tiên ( số 5 ý ) là để hiển thị số lượng bạn muốn, điền càng nhiều càng chậm 😀
  2. Cái biến 2, cái số 6 ý, là tháng, tôi tách ra để các bạn tiện hiển thị tháng này tháng kia, nếu show toàn thời gian thì điền “all” vào là được !

Các bạn có thể Echo ra hoặc vứt nó vào shortcode, các bạn làm như sau:

Vẫn cái hàm trên, vẫn cái file functions.php bạn vừa thả code vào, ta triển khai thêm đoạn code:

add_shortcode('top_comment', 'jamviet_top_comment_authors');

Chèn đoạn code trên ở trên cái Function bạn vừa thêm vào. Sửa tiếp trong hàm chỗ return $output thành echo $output nữa là ổn. Giờ thì chỉ cần vào đâu đó, Widget chẳng hạn, thả đoạn code [top_comment] vào là xong !

Nếu thả shortcode vào Widget mà không thấy nó bảo gì, hãy thêm đoạn code sau vào file Functions.php trong giao diện để bật chế độ chạy shortcode trong Widget:

add_filter('widget_text', 'do_shortcode');

Thế là xong !

Chúc các bạn thành công ! Có gì khó đã có Jam 😀

TÁC GIẢ:

Tôi là Jam, thâm niên 7 năm thiết kế website và làm SEO. Hãy theo dõi blog của tôi để nhận được nhiều chia sẻ thú vị xung quanh chủ đề công nghệ.

Có 12 bình luận !

  1. Em chào anh ạ. A ơi,A có thể hỗ trợ em vấn đề này được không ạ? Em muốn hiển thị kết quả bài làm của người dùng khi người làm hoàn thành ra trang đó (bài làm là nghe khoảng 20 tiếng anh rồi điền từ nghe được vào chỗ trống ạ)?.
    Em có nút SUBMIT để xem từ đó đúng sai, nút START để nghe, nút NEXT để chuyển từ ạ.
    Em định khai báo 1 biến màn tên: $count_num_next = 0; để đếm số lần next, vì từ nào không nghe được sẽ next để nghe từ tiếp theo ạ. Nếu $count_num_next = 20; thì echo $save_results: biến lưu kết quả bài làm ạ. xuất hiện kết quả ra màn hình ạ.Em làm như vậy có được k ạ??
    Anh giúp em với ạ, em mới học WP nên chưa năm được nhiều ạ.
    Em cảm ơn anh ạ.

    1. Một câu hỏi khó, mình không biết bạn triển khai vấn đề ra sao nên như thế này rất chung chung !
      Gợi ý cho bạn, trong WordPress có hàm update_option(); bạn có thể lưu các giá trị như bạn nói vào trong đó, bạn nghiên cứu thêm nhé !

      1. Dạ vâng ạ. Em cảm ơn anh ạ. Thực ra, yêu cầu như sau ạ.
        trong trang web có một mục bài tập tên là Spelling Practive , gồm nhiều Level và Lesson khác nhau. Mỗi Level và Lesson có 20 từ để người nghe nghe và điền từ nghe được vào chỗ trống, nếu nhấn submit thì sẽ hiển thị từ đó đúng hay sai ạ. Nhấn Next nếu không nghe được hoặc muốn bỏ qua ạ. Và yêu cầu là Nếu người dùng nhấn chọn Level hay Lesson thì trang đó không được load lại nhưng lưu bài làm của người dùng và hiển thị ra trang web ạ.
        Em mới vào thực tập ở công ty được 1 tuần về WP và được chị trưởng nhóm giao cho fix bug này nhưng em mới chỉ nắm khá ổn PHP còn WP thì em chưa vững ạ. Em chỉ mới nghĩ ra ý tưởng đó ạ, còn code như nào thì em vẫn đang tập tành code WP ạ. Em mong anh hỗ trợ em ạ.

        1. Dear bạn, WordPress làm bằng PHP 😀 vấn đề không phải ở WordPress vì bạn có thể viết thêm class vào trong wordpress để xử lý vấn đề của bạn, còn mình chưa rõ là chưa rõ code của bạn ra sao nên không thể tư vấn được, còn cơ chế mình đã hiểu, mình thì sẽ lưu các bài mà người dùng đã xem vào session, đếm khi nào tới bài cuối thì show kết quả…

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *