Popularity Contest 转换到 PostViews
前面在通过优化插件来提高 WordPress 运行效率中谈到:我一直使用的 Popularity Contest 这个插件,这个是非常好的插件,但是它一个很大的问题是对数据库操作实在太多了,因为要统计一篇日志在 single category archive home feed 等下的被阅读的次数,其实个人觉得只有在 single 下阅读次数是最重要的,如果要求提供 WordPress 运行效率的情况下,最好转换到 PostViews 这个插件。今天就把转换函数贴出来,本来想用 SQL 转换的,后来发现一个循环更容易解决问题,代码如下:
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 插件。
该函数在本站测试成功,但是为了保证你的数据的安全,请在使用之前,最好备份好数据库,以免出错,由此出现错误,本站概不负责。 🙂 挖哈哈!