代码实现wordpress浏览统计功能以及非插件调用wordpress最热文章代码

[ wordpress教程   // 2014-09-24  ]
82

在WordPress中默认情况下是无法实现热门文章的,目前比较通用的实现热门文章有两种办法:一是实现使用wp-postviews插件的方式实现,但是这种方式在使用了缓存插件会失效。二是采用伪热门方法,什么是伪热门,就是不是通过靠点击数来实现,而是通过评论数来实现。显然这不是真正的热门文章列表。我们要通过点击数来提取热门文章列表。下面我们采用非插件非评论的方式来实现热门文章列表。

代码实现wordpress浏览统计功能:

显示文章浏览数一:

在主题文件夹functions.php里 ?> 前面添加如下代码实现文章点击次数功能

/* 访问计数 */
function record_visitors()
{
if (is_singular())
{
global $post;
$post_ID = $post->ID;
if($post_ID)
{
$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);
}
}
}
}
add_action('wp_head', 'record_visitors');

/// 函数名称:post_views
/// 函数作用:取得文章的阅读次数
function post_views($before = '(点击 ', $after = ' 次)', $echo = 1)
{
global $post;
$post_ID = $post->ID;
$views = (int)get_post_meta($post_ID, 'views', true);
if ($echo) echo $before, number_format($views), $after;
else return $views;
}

然后,在文章内容模板single.php里面添加文章点击次数信息,把下面的代码添加到显示的地方就ok了

<?php post_views(‘ ‘, ‘ 次’); ?>

显示文章浏览数二:

首先也是在functions.php.php文件中在最后面  ?> 的前面加入下面的代码:

function custom_the_views($post_id, $echo=true, $views=' views') {$count_key = 'views';$count = get_post_meta($post_id, $count_key, true);if ($count == '') {delete_post_meta($post_id, $count_key);add_post_meta($post_id, $count_key, '0');$count = '0';}if ($echo)echo number_format_i18n($count) . $views;elsereturn number_format_i18n($count) . $views;}function set_post_views() {global $post;$post_id = $post->ID;$count_key = 'views';$count = get_post_meta($post_id, $count_key, true);if (is_single() || is_page()) {if ($count == '') {delete_post_meta($post_id, $count_key);add_post_meta($post_id, $count_key, '0');} else {update_post_meta($post_id, $count_key, $count + 1);}}}add_action('get_header', 'set_post_views');

代码放好后,保存,然后到主题前端位置添加调用

<?php if(function_exists('custom_the_views') ) custom_the_views($post->ID); ?>

非插件获取浏览数最多文章:

无论是wp-postviews插件还是网上的教程获取浏览数最多的文章都是使用sql语句来实现的,非插件其实也是从插件提取出来的,奇芳阁直接使用官方推荐的get_posts,省时省力,把下面的代码放到你想调用的地方,如果你想调整样式加上一些标签然后自己写点css就好了。

<ul>        <?php        $args = array(            'posts_per_page' => 5,//文章数            'meta_key' => 'views',            'orderby' => 'meta_value_num',            'date_query' => array(                array(                    'after'  => '2 month ago',//时间范围                ))        );        $postslist = get_posts( $args );        foreach ( $postslist as $post ) :            setup_postdata( $post ); ?>            <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><span> - <?php if ( function_exists('custom_the_views') ) custom_the_views($post->ID);//如果安装的是插件就换成插件的调用方法 ?></span><href="http://www.softhome.cc/li>        <?php endforeach;        wp_reset_postdata(); ?>    </ul>