Wordpress 主題顯示預估閱讀時間

Posted by Y Cheung on Tue, Jun 16, 2020

突然發現Y CHUENG寫的遊記太長了,有的遊記居然有好些人看了15分鐘,於是想在頁面靠前的地方顯示預估閱讀時間,讓讀者有個文太長的心理準備😂

如何計算文章閱讀時長

這個預估閱讀時間的計算很粗暴,就是文章字數/平均閱讀速度。Y CHEUNG 抓的平均閱讀速度是500。一般人大約是200~500左右,隨意哈。雖然 PHP 內建有計算字數的函數 str_word_count ,但是中文用這個不好使,得出的數字不對,還是用正則匹配後計算啦。

操作步驟

修改 function.php

在主題theme的 function.php 文件末尾處添加以下代碼:

1// function.php
2function reading_time() {
3    $content = get_post_field( 'post_content', $post->ID );
4    $word_count = mb_strlen(preg_replace('/\s/','',html_entity_decode(strip_tags($content))),'UTF-8');
5    $readingtime = ceil($word_count / 500);
6    $timer = ($readingtime == 1) ? "minute" : "minutes";
7    $totalreadingtime = $readingtime . $timer;
8    return $totalreadingtime;
9}

修改頁面template

在主題需要顯示預估閱讀時間的任意處添加以下代碼:

1<?php echo reading_time(); ?>

Reference