代码实现wordpress浏览统计功能以及非插件调用wordpress最热文章代码
在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>