My Big Mouth and Stupid Thougths

Trik Cepat: Recent Comments Tanpa Plugin dan Widget

Kebetulan ada teman blogger, mas Heryan Tony, pada artikel sebelum ini menanyakan bagaimana membuat Recent Comments tanpa menggunakan plugin atau memanfaatkan widget dari wordpress. Sebenarnya ini juga termasuk dalam daftar yang akan diposting berikutnya. Tetapi sepertinya memang harus dipercepat. Tidak apa-apalah sehari dua atau tiga posting kalau memang dapat berbagi infromasi (ngeles mode = ON :D ). Setelah dicoba-coba oprek fungsi di core wp lokal (dengan berbagai  kesalahan tentunya :D ), akhirnya didapatkan sebuah cara berikut:

<h3>Recent Comments</h3>
<?php
     global $wpdb;
     $sql = "SELECT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url, SUBSTRING(comment_content,1,50) AS com_excerpt FROM $wpdb->comments INNER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_approved = '1' AND comment_type = '' AND post_password = '' ORDER BY comment_date_gmt DESC LIMIT 10";
     $comments = $wpdb->get_results($sql);
     $recentComments = $pre_HTML;
     $recentComments .= "n<ul>";
     foreach ($comments as $comment) {
     $recentComments .= "n<li>".strip_tags($comment->comment_author) .": " . "<a href="" . get_permalink($comment->ID)."#comment-" . $comment->comment_ID . "" title="on ".$comment->post_title . "">" . strip_tags($comment->com_excerpt)."</a></li>";
     }
     $recentComments .= "n</ul>";
     $recentComments .= $post_HTML;
     echo $recentComments ;
?>

Ubah angka 10 pada DESC LIMIT 10 untuk menambah jumlah komen yang ingin ditampilkan.

Untuk menyaring supaya komentar dari admin blog tidak ikut dimasukkan, kita dapat menambah  AND comment_author != 'YOUR-NAME-HERE' pada bagian berikut ini:

$sql = "SELECT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url, SUBSTRING(comment_content,1,50) AS com_excerpt FROM $wpdb->comments INNER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_approved = '1' AND comment_author != 'admin' AND comment_type = '' AND post_password = '' ORDER BY comment_date_gmt DESC LIMIT 10";

Ubah kata “admin” dengan nama admin yang dipakai.

Saya tidak tahu apakah ini dapat berfungsi di themenya mas Heryan dan teman-teman yang lain atau tidak. Juga bentuk penyajiannya masih sederhana tanpa avatar. Mungkin ada yang bisa memperbaiki agar terlihat lebih menarik. Atau kalau teman-teman punya resep yang lain silahkan bagi-bagi ya. :D

update: 2009-06-18 21:41:42

  1. Penambahan filterisasi komentar admin, sumber: Remove Admin from Recent Comments List (No Plugin) dari blognya mas Arun Basil Lal.
  2. Thanks buat bang Ganda untuk koreksinya.

Affiliate Theme
Liked this page?
Subscribe to the RSS feed or to daily or weekly email updates, right now!
Share and Enjoy:
  • Digg
  • del.icio.us
  • StumbleUpon
  • Technorati
  • Facebook
  • Ping.fm
  • LinkedIn
  • FriendFeed
  • PDF
  • Twitter

42 Responses to “Trik Cepat: Recent Comments Tanpa Plugin dan Widget”

  1. Heryan Tony says:

    Wah..Wah..Muantep ni, Boss.
    Thx banget. :)

  2. achoey says:

    Makasih atas trik dahsyatnya sahabatku

  3. Wah.. keren skali.. tapi pasang kodenya di sidebar atau dimana nya neh mas.? kalo di sidebar kan sama aja dengan recent comment

    • rismaka says:

      Lhah? Ini kan memang recent comment mas. Lihat aja judulnya :)
      rismaka´s last blog ..HTTP Request, Faktor Paling Utama Penentu Performa Web My ComLuv Profile

      • Maksud aku recent comment yang dari wordpress. Masak mas rismaka gag ngerti sih maksud aku. Apa bedanya sama script yg ini?
        CatatanRudy.com´s last blog ..Upgrade Blog Malah Bikin Error My ComLuv Profile

      • no_mercy says:

        mengapa harus memakai script ini kalau secara default engine wp sudah menyediakannya pada fitur widget, mungkin itu pertanyaan dari mas Rudy?
        1) ada beberapa theme wp yang mungkin tidak menambahkan fitur pemanggilan widget
        2) dengan memakai script ini kita dapat memodifikasinya lebih lanjut, misalnya menambahkan avatar, comment excerpt dan lainnya

      • ganda says:

        atau script ini lebih cocok ke orang2 kayak bang nomercy ya? bukan orang awam kayak saya.. hahahahahaha…. *lari sebelum di jitak bang nomercy*
        ganda´s last blog ..Offline Tools : HTML Special Chars Escape Tools My ComLuv Profile

      • rismaka says:

        Wah apalagi saya bang… lebih awam lagi :lol:

        BTW, saya jadi mikir nih, fungsi recent koment itu urgent ga ya? Ayo kita pikirin usability-nya dan accessibility-nya (mencoba jadi daniiswara :mrgreen: )
        rismaka´s last blog ..HTTP Request, Faktor Paling Utama Penentu Performa Web My ComLuv Profile

      • no_mercy says:

        pada dasarnya setiap link ataupun kalimat dan kata kunci haruslah dapat memberikan suatu informasi barulah dapat dikatakan usable … kalau daftar komennya hanya berupa nama dan atau judul artikel saja rasanya kurang usable … kecuali kalau diberi tambahan berupa excerpt dari komentar tersebut … *ini menurut saya sih … jadi rasanya kurang usable* … entah menurut pakar usability dan accessibility kita (sambil mencoba menghubungi mas Dani Iswara melalui telepati) :D

  4. ganda says:

    untuk gravatar, bisa diambil dengan cara pemanggilan fungsi
    get_gravatar() berdasarkan email sang comment author. CMIIW
    ganda´s last blog ..Offline Tools : HTML Special Chars Escape Tools My ComLuv Profile

  5. rismaka says:

    Saya dari dulu nyoba utk meng”exclude” nama saya sendiri di recent komentar tsb, tapi sampe sekarang tidak bisa. Ada trik yg bisa bantu saya mas?
    rismaka´s last blog ..HTTP Request, Faktor Paling Utama Penentu Performa Web My ComLuv Profile

    • ganda says:

      kan bisa di filter berdasarkan comment author id, atau comment author email?
      ganda´s last blog ..Offline Tools : HTML Special Chars Escape Tools My ComLuv Profile

    • no_mercy says:

      sudah saya tambahkan di artikelnya mas … :)

      • ganda says:

        Menurut saya script sql diatas ada kelemahannya bang, jika suatu saat sang author mengganti namanya, pastilah admin repot2 ganti script lagi untuk bagian

        AND comment_author != 'YOUR-NAME-HERE'

        Misalnya nama saya dulunya thegands, dan sekarang saya pakai inisial ganda, pasti script ini perlu di ubah2 lagi..

        ini solusi selanjutnya dari saya bang..

        SELECT ID, user_id, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url, SUBSTRING(comment_content,1,50) AS com_excerpt FROM $wpdb->comments INNER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_approved = '1' AND comment_type = '' AND post_password = '' AND user_id != '1' ORDER BY comment_date_gmt DESC LIMIT 10

        di sini saya juga menghilangkan keyword distinct karena menurut saya tidak akan berguna keyword distinct di sini. Apa yang harus di bedakan? Karena jika distinct di hilangkan dengan di gunakan pada script tersebut, hasilnya sama saja.

        Dan kok pakai LEFT OUTER JOIN bang? Bukannya setiap postingan memiliki post ID. Demikian juga dengan comment. Post ID pastilah selalu berisi. Terkecuali adminnya iseng menghapus salah satu ID tabel post atau tabel comment. Atau malah keduanya.

        Atau dengan kode lain seperti ini(berdasarkan author_email)


        SELECT $wpdb->posts.ID, user_id, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url, SUBSTRING(comment_content,1,50) AS com_excerpt FROM $wpdb->comments INNER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) INNER JOIN $wpdb->users ON $wpdb->users.user_email = $wpdb->comments.comment_author_email WHERE comment_approved = '1' AND comment_type = '' AND post_password = '' ORDER BY comment_date_gmt DESC LIMIT 10

        Walau solusi kedua juga generic, namun script ini memiliki kelemahan apabila sang admin mengganti emailnya. Jadi saya sarankan script pertama.

        CMIIW
        ganda´s last blog ..Offline Tools : HTML Special Chars Escape Tools My ComLuv Profile

      • no_mercy says:

        kalau untuk sekedar memfilter admin berdasarkan email kan sama saja bang dengan script yg di artikel, tinggal mengganti AND comment_author != 'YOUR-NAME-HERE' menjadi AND comment_author_email != 'YOUR ADMIN EMAIL'

        tetapi bang Ganda benar, kalau kita hanya memakai user name atau email sebagai filter dan digabung dengan OUTER JOIN, maka kalau ada pengunjung memakai user name atau email yang sama akan ikut dihilangkan …

        jadi kesimpulannya lebih baik memakai user_id login, karena bagaimanapun admin blog tetap yang itu itu juga dan user_id ini tidak dapat dipakai oleh pengunjung …

        terima kasih atas petunjuknya bang … memang hebring dah abang satu ini … :D

      • no_mercy says:

        saya buat posting lanjutan saja ya bang :D

  6. suwung says:

    wah kalo ini nyerah.. ampun gaptek diriku

  7. iskandaria says:

    Sepertinya pake kode html ya mas. Kalo gitu cocok juga buat blogspot kayaknya..
    iskandaria´s last blog ..4 Tips Ampuh untuk Mempertahankan Semangat Ngeblog Anda My ComLuv Profile

  8. kawanlama95 says:

    wah info bagus neeh. perlu dicoba ga ya.
    Selamat siang oke
    kawanlama95´s last blog ..Imajinasi krativitas My ComLuv Profile

  9. wah, saya pengguna blogspot, nyoba nya gimana ya? he..
    andrie callista´s last blog ..Pendakian Menuju Benteng Belanda My ComLuv Profile

  10. achoey says:

    tertarik si ya
    cuma kan daku gaptek :D

  11. fanari says:

    biar praktis dimasukkan ke functions.php aja

    • no_mercy says:

      kalau dimasukkan ke function.php apakah lalu tidak menjadi sama dengan yang di widget? kecuali kalau sudah dimodifikasi lengkap, misalnya dengan gravatar, excerpt comment, atau yang lainnya … eh, malah ini jadinya plugin ya … :D … sebenarnya kata-kata ‘tanpa plugin dan widget’ itu juga kurang tepat … karena ini juga termasuk keduanya … mungkin harus ditambah ‘tanpa perlu bantuan’ …

  12. Irfan says:

    Wahh…wah…
    Tq ya sob infonyaa……

  13. [...] posting artikel kemarin tentang trik cepat membuat Recent Comments tanpa menggunakan plugin atau memanfaatkan fitur widget, maka kali ini dilanjutkan bagaimana caranya menghilangkan Admin dari daftar Recent Comments [...]

  14. febri says:

    ka’ adrian,pas saya udah coba,cuman koq nick name temen2 yang udah komentar gak jadi link y ka’?
    kalo bisa sekalian dikasih tau ka’ caranya biar linknya dofollow. :D
    febri´s last blog ..temen baru = award baru My ComLuv Profile

  15. keep posting heb and maju terus !
    Full Software Collextions´s last blog ..Windows XP NASA SP3 SATA 2010 My ComLuv Profile

Disarankan untuk tidak nge-junk iklan, refferal afiliasi, dan sejenisnya tanpa seizin admin. Isilah nama, email dan alamat website dengan sebenar-benarnya. Baca disclaimer.

Leave a Reply


CommentLuv Enabled

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.