1. David Wu首页
  2. WordPress
  3. WordPress安装教程

WordPress不用插件实现文章阅读计数及热门文章-WordPress开发教程

作为WordPress使用者,能不使用插件就尽量不安装插件,作为WordPress主题制作者,就更不应该让主题依赖插件了。文章阅读计数和热门文章列表是常见的需求,实现起来其实也并不复

作为WordPress使用者,能不使用插件就尽量不安装插件,作为WordPress主题制作者,就更不应该让主题依赖插件了。文章阅读计数和热门文章列表是常见的需求,实现起来其实也并不复杂。

设置文章阅读数量函数:

function bzg_set_post_views() {
	global $post;
	if( ! isset( $post->ID ) || ! is_singular()  ) return;
	$cookie_name = 'views_' . $post->ID;
	if( isset( $_COOKIE[$cookie_name] ) ) return;
	$post_views = (int) get_post_meta( $post->ID, 'views', true );
	if( empty( $post_views ) ) {
		$post_views = 1;
	} else {
		$post_views = $post_views + 1;
	}
	update_post_meta( $post->ID, 'views', $post_views );
	setcookie( $cookie_name, 'yes', ( current_time( 'timestamp' ) + 86400 ) );
}
add_action( 'get_header', 'bzg_set_post_views' );

代码中86400是指同一浏览器访问24小时内不计数,这样就能一定程度上避免刷阅读数。

读取文章阅读数量函数:

function bzg_post_views($post_ID = '') {
	global $post;
	$post_id = $post_ID;
	if( ! $post_id ) $post_id = $post->ID;
	if( ! $post_id ) return;
	$post_views = (int) get_post_meta( $post_id, 'views', true );
	if( empty( $post_views ) ) $post_views = 0;
	return $post_views;
}

以上代码放到主题文件functions.php中,在需要显示文章阅读数的地方调用:

<?php echo bzg_post_views(); ?>

获取阅读数最多的文章:

function bzg_get_most_viewed( $limit = 10 ) {
	$args = array(
		'posts_per_page' => $limit,
		'order' => 'DESC',
		'post_status' => 'publish',
		'orderby'    => 'meta_value_num',
		'meta_key' => 'views',
		'date_query' => array(
			array(
				'after'  => '-360day',
			)
		),
	);
	$str = implode('&', $args);
	$postlist = wp_cache_get('hot_post_' . md5($str), 'beizigen');
	if(false === $postlist) {
		$postlist = get_posts( $args );
		wp_cache_set('hot_post_' . md5($str), $postlist, 'beizigen', 86400);
	}
	foreach ( $postlist as $post ) {
		echo '<li><a href="' . get_permalink($post->ID) . '" rel="bookmark">' . $post->post_title . '</a></li>';
	}
	wp_reset_postdata();
}

注意函数中的-360day,是指输出360天内的文章,函数调用方法:

<ul>
	<?php bzg_get_most_viewed(8); ?>
</ul>

原创文章,作者:DavidWu,如若转载,请注明出处:https://www.davidwu.net/archives/121720

服务项目 服务内容 收费标准(元)
开发定制 WordPress主题/插件开发定制 (以最终需求为准)
主题/插件汉化 汉化团队WordPress主题/插件,翻译率95% (以标的主题/插件的句子数量为准)
服务器环境配置 基于您现有服务器,搭建配置网站运行环境,结合我们多年来实战经验,可完美支持WordPress等PHP程序运行,并配置伪静态规则、优化目录权限等问题。服务器我们强烈推荐使用Linux系统。 100元/次
网站托管 若贵站目前尚无技术人员,无法完成服务器环境配置,可选择我们的网站托管服务,直接交付正常运行的WordPress站点,并且无需担心服务器的后续维护工作,一切都由我们来帮您完成。 标配套餐:1000元/年/站点 高配套餐:联系客服获取
网站加速优化 从服务器后端配置优化到WordPress数据库缓存、前端页面缓存、JS和CSS压缩合并,全方位优化网站加载速度,实现秒开。(此服务仅针对(云)服务器/VPS) 500元/次(仅站内优化200元/次)
主题配置 本站所有主题均支持,可快速实现,若有任何问题可以咨询客服解决,若您希望我们提供配置服务,可选购此服务。 英文主题安装 60元/次 汉化主题安装 30元/次
HTTPS配置 HTTPS已经不断普及,并且有着更高的安全性以及SEO上的优待。该服务收取的为服务费,SSL证书产生的费用请自行承担。 100元/次
网站搬家 迁移网站所有文件和数据库信息、网站相关配置的调整、以及迁移中的疑难问题故障排除。 标准收费:500元/次 若网站数据量大,需协商
网站运维 提供整站的运维服务,保证网站正常运行。包含:网站故障定位及排除、网站数据备份和恢复、网站攻击及木马等问题的处理等 标准收费:2000元/年 IP 5000以上需协商

发表评论

电子邮件地址不会被公开。 必填项已用*标注