Popularity Contest 转换到 PostViews

2023-04-13 19:16:42 浏览数 (1)

前面在通过优化插件来提高 WordPress 运行效率中谈到:我一直使用的 Popularity Contest 这个插件,这个是非常好的插件,但是它一个很大的问题是对数据库操作实在太多了,因为要统计一篇日志在 single category archive home feed 等下的被阅读的次数,其实个人觉得只有在 single 下阅读次数是最重要的,如果要求提供 WordPress 运行效率的情况下,最好转换到 PostViews 这个插件。今天就把转换函数贴出来,本来想用 SQL 转换的,后来发现一个循环更容易解决问题,代码如下:

代码语言:javascript复制
function Popularity_Contest_to_PostViews() {
	global $wpdb;
	$q = "select id from wp_posts where post_type='post' or post_type='page'";	
	$post_ids = $wpdb->get_results($q);	
	foreach ($post_ids as $post_id ){	
		$id = $post_id -> id;		
		$sql = "SELECT single_views FROM wp_ak_popularity WHERE post_id = $id";
		$views = $wpdb->get_results($sql);
		if ($views) {
			$view = $views[0]->single_views;
			if($view){
				if(!update_post_meta($id, 'views', $view)) {
					add_post_meta($id, 'views', $view, true);
				}
			}
		}
	}
}
Popularity_Contest_to_PostViews();

在激活 PostViews 插件之前,你把以上代码复制到你的模板的 footer.php 中,让其运行一次,删除以上代码,然后安装 PostViews 插件。

该函数在本站测试成功,但是为了保证你的数据的安全,请在使用之前,最好备份好数据库,以免出错,由此出现错误,本站概不负责。

0 人点赞