[PHP] [原创] WordPress OneSocial主题下的估计阅读时间在中文站下显示不准确
Onesocial主题下,博客分类页面,无论篇幅有多长,估计的阅读时间始终为0。如下图:
原因是主题函数 boss_estimated_reading_time 中使用了 str_word_count 作为字数的统计。
PHP代码
function boss_estimated_reading_time( $post_content ) { $words = str_word_count( strip_tags( $post_content ) ); $minutes = floor( $words / 120 ); $seconds = floor( $words % 120 / ( 120 / 60 ) ); if ( 1 <= $minutes ) { $estimated_time = $minutes . __( ' min read', 'onesocial' ); } else { $estimated_time = $seconds . __( ' sec read', 'onesocial' ); } return $estimated_time; }
str_word_count是以空格作为分词依据,在中文下无效。
找到/buddyboss-inc/theme-functions.php,在大概2706行左右,将函数修改为:
PHP代码
function boss_estimated_reading_time( $post_content ) { $words = mb_strlen( strip_tags( $post_content ), 'UTF-8' ); $minutes = floor( $words / 240 ); $seconds = floor( $words % 240 / ( 240 / 60 ) ); if ( 1 <= $minutes ) { $estimated_time = $minutes . __( ' min read', 'onesocial' ); } else { $estimated_time = $seconds . __( ' sec read', 'onesocial' ); } return $estimated_time; }
其中240为预计每秒阅读4个字,可根据实际情况修改。
另外在博客分类页中正常显示还需要修改/template-parts/content-blog.php:
在最前面添加:
PHP代码
global $post; $post_content = $post->post_content;
即可正常显示:
版权声明:本文为原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
本文链接:https://www.qwqoffice.com/article.php?mod=view&tid=21
本文链接:https://www.qwqoffice.com/article.php?mod=view&tid=21