Wordpress Dev

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 …

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 😀

Thông tin liên quan