WordPress 点击率文章列表的做法  

在 WordPress 中,一般用 wp-postviews 插件来统计点击量的多少,这个插件应该是最常用的了,功能很强大,感谢插件的作者。而且插件还自带了一些函数,比如统计最多点击量的文章和页面等,但是你有没有想过输出一些带有图片的点击量排行?可能对于文章内图片比较多的博客比较有用吧。
 
这个想法已经在需要 wp-postviews 插件的支持,以此来对点击量进行排行。在看以下代码之前,建议你先看一下 WordPress 的timthumb ,因为在以下的图片缩略图功能借助于 timthumb 这个第三方的缩略图功能。
 
然后,把以下代码复制到 WordPress 主题的 functions.php 中:
 
function most_viewed($mode = '', $limit = 10, $display = true) {
    global $wpdb, $post;
    $where = '';
    $temp = '';
    $output = '';
    if(!empty($mode) && $mode != 'both') {
        $where = "post_type = '$mode'";
    } else {
        $where = '1=1';
    }
    $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 < '".current_time('mysql')."' AND $where AND post_status = 'publish' AND meta_key = 'views' AND post_password = '' ORDER  BY views DESC LIMIT $limit");
    if($most_viewed) {
        foreach ($most_viewed as $post) {
            $post_title = get_the_title();
            if(has_post_thumbnail( intval($post->ID) )){
                $timthumb_src = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID),'full');
                $post_timthumb = '<img src="'.get_bloginfo("template_url").'/timthumb.php?src='.$timthumb_src[0].'&amp;h=78&amp;w=78&amp;zc=1" alt="'.$post_title.'" />';
                $output .= '<li><a class="pic" href="'.get_permalink().'" title="'.$post_title.'">'.$post_timthumb.'</a></li>';
            } else {
                $post_timthumb = '';
                ob_start();
                ob_end_clean();
                $temp = preg_match('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $index_matches);//获取日志中第一张图片
                $first_img_src = $index_matches [1];    //获取该图片 src
                if( !empty($first_img_src) ){    //如果日志中有图片
                    $post_timthumb = '<img src="'.get_bloginfo("template_url").'/timthumb.php?src='.$first_img_src.'&amp;h=78&amp;w=78&amp;zc=1" alt="'.$post_title.'" />';
                    $output .= '<li><a class="pic" href="'.get_permalink().'" title="'.$post_title.'">'.$post_timthumb.'</a></li>';
                } else {    //如果日志中没有图片,则显示默认
                    $post_timthumb = '<img src="'.get_bloginfo("template_directory").'/img/default.gif" />';
                    $output .= '<li><a class="pic" href="'.get_permalink().'" title="'.$post_title.'">'.$post_timthumb.'</a></li>';
                }
            }
        }
    } else {
        $output = '<li>N/A</li>'."\n";
    }
    if($display) {
        echo $output;
    } else {
        return $output;
    }
}
然后,在需要的地方可以如下调用:
 
<?php
    echo '<ul>';
    most_viewed('post',10,true);
    echo '</ul>';
?>
好了,就是这样,现在回过头来看看好简单。
 

欢迎大佬支持本博客的发展 -- Donate --

本文链接:WordPress 点击率文章列表的做法

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:三十岁,谢谢!^^


分享到:          
  1. 想法不错@@@@

    • DH
    • 2011年08月16日

    这个想法不错。。

  1. 没有通告