解决使用 cos-html-cache 静态化之后阅读浏览次数的问题

最近访问量增大让我意识到需要做一做静态化,经过比较之后发现 cos-html-cache 非常好,但是遇到一个问题,启用该插件之后浏览次数无法更新了,一直停留在那里,网上搜了一下建议使用 WP-PostViews JS 版本,但是我不想如此简单的功能不值得再安装一个插件,找了这么多天,终于找到一篇文章:WordPress利用Ajax实现文章浏览次数统计代码

根据作者的文章做做修改。

直接修改主题,先找到 functions.php 函数文件,直接在后面加入下面的代码:

function Bing_statistics_visitors( $cache = false ){
 global $post;
 $id = $post->ID;
 if( $cache ) $id = $_GET['id'];
 if( ( !is_singular() && !$cache ) || !$id ) return;
 if( WP_CACHE && !$cache ){
  echo '<script type="text/javascript">window.onload=function(){var e=null;window.XMLHttpRequest?e=new XMLHttpRequest:e=new ActiveXObject("Microsoft.XMLHTTP"),e.open("GET","' . admin_url( 'admin-ajax.php' ) . '",!0),e.send("action=visitors&id=' . $id . '")}</script>';
  return;
 }
 $post_views = (int) get_post_meta( $id, 'views', true );
 if( !update_post_meta( $id, 'views', ( $post_views + 1 ) ) ) add_post_meta( $id, 'views', 1, true );
}
add_action( 'wp_head', 'Bing_statistics_visitors' );
 
//解决缓存问题
function Bing_statistics_cache(){
 Bing_statistics_visitors( true );
}
add_action( 'wp_ajax_nopriv_visitors', 'Bing_statistics_cache' );
add_action( 'wp_ajax_visitors', 'Bing_statistics_cache' );
 
//获取计数
function Bing_get_views( $get = true ){
 global $post;
 $views = number_format( (int) get_post_meta( $post->ID, 'views', true ) );
 if( $get ) return $views;
 echo $views;
}

然后在需要显示浏览次数的模板,主要 sing.php 和 index.php 适当的位置添加以下代码(用 Bing_get_views() 函数获取或输出数量):

<?php echo Bing_get_views(); ?>

或者

<?php Bing_get_views( false ); ?>

OK,就是这么简单!



为您推荐

说点什么

您将是第一位评论人!

提醒
avatar
wpDiscuz