大发有旧文《WordPress估算文章阅读时间》,实际应用了一下,觉得:1、用平均阅读时间不很准确;2、只能显示分钟,不科学。于是改良如下:
/* 估算文章阅读时间 */
//获取文章长度
function fa_get_postlength(){
global $post;
//注:如文中用了某些特殊插件导致出现大量特殊字符,建议用wp_strip_all_tags。
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 Sec2Time($time){
if(is_numeric($time)){
$value = array(
"years" => 0, "days" => 0, "hours" => 0,
"minutes" => 0, "seconds" => 0,
);
if($time >= 31556926){
$value["years"] = floor($time/31556926);
$time = ($time%31556926);
}
if($time >= 86400){
$value["days"] = floor($time/86400);
$time = ($time%86400);
}
if($time >= 3600){
$value["hours"] = floor($time/3600);
$time = ($time%3600);
}
if($time >= 60){
$value["minutes"] = floor($time/60);
$time = ($time%60);
}
$value["seconds"] = floor($time);
if($value["hours"] != 0) {
$t= $value["hours"] ."h". $value["minutes"] ."m".$value["seconds"]."s";
}
if($value["hours"] == 0 && $value["minutes"] != 0) {
$t= $value["minutes"] ."m".$value["seconds"]."s";
if($value["seconds"] == 0) {
$t= $value["minutes"] ."m";
}
}
if($value["hours"] == 0 && $value["minutes"] == 0 && $value["seconds"] !=0) {
$t= $value["seconds"]."s";
}
if($value["hours"] == 0 && $value["minutes"] == 0 && $value["seconds"] ==0) {
$t= "1s";
}
Return $t;
}else{
return (bool) FALSE;
}
}
//计算阅读时间,以秒为单位
function fa_get_post_readtime(){
global $post;
$all = fa_get_postlength() / 40 + fa_get_post_img_count();
return Sec2Time($all);
}
在循环内使用 <?php echo fa_get_post_readtime(); ?> 调用。
大致 美国
不就是字数统计嘛,这不科学啊。
八年前 Firefox 52 · Windows 7比如我写一堆“滹嬖綟巁”这样的字……
S̆̈ 江苏 *
@大致 这四个字怎么读啊……
八年前 Google Chrome 56 · Mac OS X 10.12大致 美国
@S̆̈ 胡逼咧咧
八年前 Firefox 52 · Windows 7S̆̈ 江苏 *
@大致 挺科学的啊,根据字数+图片统计估算阅读时间。
八年前 Safari 10 · iPhone iOS 10.3.1大致 美国
@S̆̈ 同样的字数,流水帐跟古文的阅读时间不同。
八年前 Firefox 52 · Windows 7一张蓝天白云跟一张圣斗士全家福的读图时间也不同。
S̆̈ 江苏 *
@大致 这个只能靠猜了。
八年前 Google Chrome 56 · Mac OS X 10.12木瓜园 江苏
@大致 意思是假如放一张甲骨文的象形文字图,指不定就无法破解,永远读不完了。
八年前 Safari 10 · iPhone iOS 10.3.1大致 美国
@木瓜园 难度超过一个阀值就直接点叉了。
八年前 Firefox 52 · Windows 7S̆̈ 江苏 *
@大致 嗯,先把这当一个玩字用着吧……
八年前 Wordpress App 7 · iPhone iOS 10.3.1不亦乐乎 福建
@大致 这个杠抬的好!
八年前 Google Chrome 57 · Android 6.0S̆̈ 江苏 *
@不亦乐乎 你捣乱 😡
八年前 Wordpress App 7 · iPhone iOS 10.3.1fooleap 广东
精确到秒感觉很认真了。。。
八年前 Google Chrome 57 · Windows 7我感觉普通文章可以通过估算,勉强显示阅读需时,但一旦涉及到技术的文章,阅读时间可能就千差万别。
比如你这篇文章,看完很快,但要理解代码估计费点时间了。
S̆̈ 江苏 *
@fooleap 对,确实如此,其实这个功能也不是很严肃的功能,再者我也有心想把它整得更严肃点儿,只是没思路啊,难道设计图像识别和内容鉴定?给每种内容增加系数值? 😂
八年前 Wordpress App 7 · iPhone iOS 10.3.1