我們在很多個人站長博客中會看到有一些網站的瀏覽排行了,那么這種功能要如何來實現呢,下面小編就同各位介紹一下吧.
在一小時內刷新文章不會多次統計,只會被算作一次訪問,把下面的代碼復制粘貼到主題的 functions.php 里面:
- /***** Postviews *****/
- function record_visitors(){
- if (is_singular()) {
- global $post;
- $post_ID = $post->ID;
- if($post_ID) {
- if(isset($_COOKIE['views'.$post_id.COOKIEHASH]) && $_COOKIE['views'.$post_id.COOKIEHASH] == ’1′)return;
- $post_views = (int)get_post_meta($post_ID, ‘views’, true);
- if(!update_post_meta($post_ID, ‘views’, ($post_views+1))) {
- add_post_meta($post_ID, ‘views’, 1, true);
- }
- setcookie(‘views’.$post_id.COOKIEHASH,’1′,time() + 3600,COOKIEPATH,COOKIE_DOMAIN);//設置時間間隔
- }}}
- add_action(‘wp_head’, ‘record_visitors’);
- function post_views($before = ”, $after = ”, $echo = 1){
- global $post; //Vevb.com
- $post_ID = $post->ID;
- $views = (int)get_post_meta($post_ID, ‘views’, true);
- if ($echo) echo $before, number_format($views), $after;
- else return $views;
- }
在需要的位置用下面的代碼調用,代碼如下:
<?php if (function_exists(‘post_views’)) post_views(); ?>
然后是瀏覽次數排行榜,參考了WP-Postviews 插件源代碼,可以設置限定近期一段時間內的文章的瀏覽次數排行,更為實用,所以這個相當不錯的插件真的可以丟掉了.
添加到 functions.php 里,代碼如下:
- /***** Most Viewed *****/
- function most_viewed($limit = 10) {
- global $wpdb, $post;
- $output = ”;
- $most_viewed = $wpdb->get_results(“SELECT DISTINCT $wpdb->posts.*, (meta_value+0) AS views FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ON $wpdb->postmeta.post_id = $wpdb->posts.ID WHERE post_date > ‘” . date(‘Y-m-d’, strtotime(‘-100 days’)) . “‘ AND post_type =’post’ AND post_status = ‘publish’ AND meta_key = ‘views’ AND post_password = ” ORDER BY views DESC LIMIT $limit”);//設置近100天內文章的排行榜
- if($most_viewed) {
- foreach ($most_viewed as $post) {
- $output .= “\n<li><a href= \”".get_permalink($post->ID).”\” rel=\”bookmark\” title=\”".$post->post_title.” (“.$post->views.”+)\” >”. $post->post_title.” (“.$post->views.”+)</a></li>”;
- }
- echo $output;
- }}
在頁面適當的地方調用代碼如下,括號內參數為顯示數目,代碼如下:
<?php if (function_exists(‘most_viewed’)) most_viewed(10); ?>
新聞熱點
疑難解答
圖片精選