WordPress 估算文章阅读时间

标题中已经写明了是估算,阅读速度因人而异,这里也只能做大致的估算。

网上能搜到的方法是直接计算post content 长度,然后再除以平均阅读字数估算出阅读时间,总的来说,这样问题也不大,毕竟只是个估算。但个别时候可能会出现一些问题。

比如,当一篇文章全是图片的时候,比如有100张图片,全部看完要很久,但是使用传统方法来估算的话可能不到不到1分钟就看完了。因为传统方法只是把图片标签算做了文字,这样就非常不准确了。或者你为了更准确一些,去掉了html标签,那么100张图片的文章阅读时间就是0了。

所以,我的计算方法是,统计文章中的图片数量,估算图片的阅读时间。再去掉html标签,计算文字个数,估算文字阅读时间,二者相加来取得总的时间。这种计算方法看上去更加科学一些,但仍然是估算。

功能函数

function fa_get_postlength(){
    global $post;
    return strlen( strip_shortcodes(strip_tags(apply_filters('the_content', $post->post_content))) );
}

function fa_get_post_img_count(){
    global $post;
    preg_match_all('/<img.*?(?: |\\t|\\r|\\n)?src=[\'"]?(.+?)[\'"]?(?:(?: |\\t|\\r|\\n)+.*?)?>/sim', $post->post_content, $strResult, PREG_PATTERN_ORDER);
    return count($strResult[1]);
}

function fa_get_post_readtime(){
    global $post;
    return ceil(fa_get_postlength() / 800 + fa_get_post_img_count() * 8 / 60);
}

使用方法

在循环内使用<?php echo fa_get_post_readtime(); ?>调用,单位分钟。


如果你能用在你优秀的付费主题中,不妨也意思意思感谢下我。

14

Related Posts

Comments : 14

  1. 发现在你这看不到你网站的图片,一开始以为是因为我在国外网速太渣,但是发现回来也还是看不到~~

    1. @AARON

      可能是 google domain dns 的问题。

  2. :twisted: 1分钟就读完

发表留言

Post Comment