如何为WordPress添加文章字数统计和预计阅读时间?

 2017-03-17 11:36:38  354 人阅读  6 条评论

曾经在某些博客文章中看到有该篇文章的字数统计和预计阅读时间,boke112 认为这两个小数据还是比较人性化的,可以用读者用户在阅读前就大概知道这篇文章的长度及预计花费的时间,今天我们就来说一说如何为 WordPress 添加文章字数统计和预计阅读时间。

如何为WordPress添加文章字数统计和预计阅读时间? WordPress 第1张

一、为 WordPress 添加文章字数统计

1、将以下代码加到主题的 functions.php 文件最后一个 ?> 的前面。

  1. //字数统计
  2. function count_words ($text) {
  3. global $post;
  4. if ( '' == $text ) {
  5.    $text = $post->post_content;
  6.    if (mb_strlen($output, 'UTF-8') < mb_strlen($text, 'UTF-8')) $output .= '本文共' . mb_strlen(preg_replace('/\s/','',html_entity_decode(strip_tags($post->post_content))),'UTF-8') . '个字';
  7.    return $output;
  8. }
  9. }

2、再把调用统计代码加到自己认为适合的位置,如 single.php 文件的某个位置。

  1. <?php echo count_words ($text); ?>

以上代码来自:知更鸟

PS:经 boke112 测试,以上代码统计中文和英文都没有问题,跟 Microsoft Word 统计的字数完全一致。

二、为 WordPress 添加预计阅读时间

将以下代码加到主题的 functions.php 文件最后一个 ?> 的前面,保存后即可在 WordPress 文章内容开始的地方自动显示“预计阅读时间 x 分钟”。

  1. function lmsim_read_time($content){
  2.         $text = trim(strip_tags( get_the_content()));
  3.         $text_num = mb_strlen($text, 'UTF-8');
  4.         $read_time = ceil($text_num/400);
  5.         $content = '<div class="read-time">预计阅读时间 <span>' . $read_time . '</span> 分钟</div>' . $content;
  6.         return $content;
  7. }
  8. add_filter ( 'the_content', 'lmsim_read_time');

以上代码中第 4 行的数值 400,是根据百度出来的“一般人的阅读速度平均为(300~500)字/分钟”取中间值,如果你觉得 400 太慢可以自行修改,需要自定义样式的可以对 .read-time 在 css 里自定义样式。

以上代码来自:不亦乐乎

经过 boke112 测试发现,以上代码统计的文章字数有所误差,会比实际多几个字,具体如下:

如何为WordPress添加文章字数统计和预计阅读时间? WordPress 第2张

Word 统计的字符数为 290 个

如何为WordPress添加文章字数统计和预计阅读时间? WordPress 第3张

如上图所示,知更鸟统计的字数为 290 个字符,跟 Word 统计的一样,而不亦乐乎统计的字数($text_num)比实际多 12 个。而且这个预计阅读时间只能出现在文章开头,所以 boke112 决定把这两个代码结合在一起优化一下。

三、优化后的预计阅读时间代码

1、将以下代码加到主题的 functions.php 文件最后一个 ?> 的前面。

  1. //字数和预计阅读时间统计
  2. function count_words_read_time () {
  3. global $post;
  4.    $text_num = mb_strlen(preg_replace('/\s/','',html_entity_decode(strip_tags($post->post_content))),'UTF-8');
  5.    $read_time = ceil($text_num/400);
  6.    $output .= '本文共' . $text_num . '个字,预计阅读时间需要' . $read_time  . '分钟。';
  7.    return $output;
  8. }

其中,以上的 400 为阅读速度,可以更改。如只需要输出阅读时间或文章字数,只需要修改删除第 6 行某些代码即可,具体请自行 DIY 吧。

2、再把调用统计代码添加到 single.php 文件适合的位置即可。

  1. <?php echo count_words_read_time(); ?>

四、预计阅读时间代码优化前后对比

经过 boke112 测试,当字数小于等于 400,也就是阅读时间小于等于 1 分钟时,本文两段统计的预计阅读时间都一样,都是 1 分钟。但是如果超过 400 时,就会有所偏差。比如把上文中的 290 个字符再粘贴 3 次达到 1160 个字符,那么第二点的预计阅读时间将为 4 分钟,而第三点优化后的代码则为 3 分钟。所以从数字上来看,优化后的代码统计的预计阅读时间更为精准。具体如下图所示:

如何为WordPress添加文章字数统计和预计阅读时间? WordPress 第4张

拓展阅读(ceil() 函数)

ceil() 函数向上舍入为最接近的整数。意思就是说返回不小于 x 的下一个整数,x 如果有小数部分则进一位。ceil() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。

例子

  • ceil(0.60),输出 1;
  • ceil(0.4) ,输出 1;
  • ceil(5),输出 5;
  • ceil(5.1),输出 6;
  • ceil (-5.1),输出 -5;
  • ceil(-5.9),输出 -5;
本文地址:http://boke112.com/3845.html
文章标签: ,   ,  
关注我们:请关注一下我们的微信公众号:扫描二维码,公众号:aiboke112
版权声明:本文为原创文章,版权归  所有,欢迎分享本文,转载请保留出处!
WordPress/zblogPHP免费响应式博客主题Blogs

 发表评论


  1. 网站seo优化
    网站seo优化 【总理】 @回复

    这个小功能蛮有意思的

  2. Koolight
    Koolight 【省长】 @回复

    好多公众号有这样的提示,估计手动添加的。

  3. 龙笑天
    龙笑天 【市长】 @回复

    没看到你网站用啊~ 想看看效果的~

    • boke112导航
      boke112导航【站长】2017-03-17 21:30  回复

      @龙笑天[偷笑] 页面太满了,都不懂放哪里了,所以就懒得添加进我博客了。我有一个测试站专门来折腾这个小功能的

  4. 雅兮网
    雅兮网 【省长】 @回复

    厉害了 这都能做出来

    • boke112导航
      boke112导航【站长】2017-03-17 15:18  回复

      @雅兮网[偷笑] 其实都是综合别人的代码,其实就是统计文章字数,然后除以阅读速度就OK了