Menampilkan posting baru berdasarkan tag yang ditentukan adalah hal yang biasa dipasang pada situs wordpress pada umumnya. tapi bagaimana jika cara menampilkan tag populer dengan interval waktu selama 1 bulan bahkan kurang ?, mungkin kalian ingin sekali tau cara membuatnya.

Tutorial ini secara tidak sengaja saya temukan pada situs tanya jawab seputar website yang mungkin terkenal yaitu stackoverflow, disana terdapat satu penanya yang menanyakan bagaimana cara menampilkan tag populer dan ada satu jawaban yang dikirimkan pada satu pengguna dan itu berhasil saya aplikasikan pada situs ini.

dikutip dari stackoverflow

This code will return the most used tags on the last 30 days. With a little bit of jQuery and CSS you can customize to, for example, put a large font-size on the first one and a small font-size on the last one.

disana tertulis bahwa code itu dapat digunakan untuk menampilkan tag dalam waktu 30 hari terakhir, jadi jika sudah lewat dari 30 hari maka popular tag akan direset kembali sesuai dengan jumlah artikel yang terdapat pada tag tersebut.

Namun ada lagi tambahan dari pengguna tersebut, mungkin saja kalian memerlukan sedikit code CSS atau jQuery untuk mengaplikasikan cara ini namun bagi kalian yang sudah memiliki code CSS atau jQuerynya maka kalian hanya perlu mengadaptasikannya saja.

Mengaplikasikan code

Untuk mengaplikasikan code ini kalian tidak lagi mengubah file function.php untuk menjalankannya, cukup menambahkannya pada tempat yang kalian inginkan contohnya pada index.php ataupun single.php maka code ini bisa berjalan dengan lancar.

Untuk codenya kurang lebih seperti ini :

<?php $wpdb->show_errors(); ?> 
    <?php
        global $wpdb;
        $term_ids = $wpdb->get_col("
            SELECT term_id FROM $wpdb->term_taxonomy
            INNER JOIN $wpdb->term_relationships ON $wpdb->term_taxonomy.term_taxonomy_id=$wpdb->term_relationships.term_taxonomy_id
            INNER JOIN $wpdb->posts ON $wpdb->posts.ID = $wpdb->term_relationships.object_id
            WHERE DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= $wpdb->posts.post_date
            "
        );
                    
        if(count($term_ids) > 0){
                    
            $tags = get_tags(array(
                'offset' => array('tag__not_in'=>array('20')),
                'orderby' => 'count',
                'order'   => 'DESC',
                'number'  => 8,
                'include' => $term_ids,
            ));
                        
            foreach ( (array) $tags as $tag ) {
                echo '<li><a href="' . get_tag_link ($tag->term_id) . '" rel="tag">' . $tag->name . '</a></li>';
            }
        }
    ?>

Dapat digunakan untuk yang lain ?

Dilihat dari query yang diberikan, pengguna tersebut menggunakan JOIN QUERY untuk mewujudkannya. jadi jika kalian ingin membuat misalnya artikel populer berdasarkan view dengan jangka waktu tertentu atau kategori populer berdasarkan jumlah artikel yang diterbitkan dengan jangka waktu tertentu maka query ini sah-sah saja digunakan jika kalian dapat memodifikasinya.

Bagaimana apakah cara ini sudah berhasil ?