解决使用 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,就是这么简单!
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/32079.html