为使用子比主题的博客文章添加字数统计

本文共有796个字,阅读需要4分钟。

现在有不少网站为文章添加了字数统计和阅读时间预估,老郭觉得这个功能非常的不错。一来很人性化,为访客提供了便利;二来也让网站显得很正规、很上档次。因此老郭也想为博客添加上这个功能。

虽然网上对于这方面的内容非常的多,但绝大部分都是适用于wordpress自带的主题的,而对于在子比主题中添加这个功能的资料却异常的稀少,所以老郭只能自己去分析子比主题的代码了。

按照网上的资料,要在wordpress中添字数统计和阅读时间,需要修改主题的function.php和single.php文件,各添加一段代码。

图片[1]-为使用子比主题的博客文章添加字数统计

那就一步步来好了,首先打开子比主题的function.php文件,子比主题在这个文件里添加了一大段的注释,意思是主题更新的时候,function.php有可能被覆盖,所以不建议直接修改function.php文件,而是新建一个func.php,这样function.php就可以自动引入func.php中的代码,实现同样的功能。

图片[2]-为使用子比主题的博客文章添加字数统计

那就在和function.php相同的目录下新建一个func.php文件,然后写入以下代码。

<?php
function count_words_read_time () {
global $post;
   $text_num = mb_strlen(preg_replace('/\s/','',html_entity_decode(strip_tags($post->post_content))),'UTF-8');
   $read_time = ceil($text_num/260);
   $output .= '本文共有' . $text_num . '个字,阅读需要' . $read_time  . '分钟。';
   return $output;
}

老郭把自己现成的文件也放在这里。其中的260就是每分钟阅读的字数,一般人的阅读速度在300字左右。

func.zip
zip文件
411B
function count_words_read_time() {
    global $post;

    // 获取文章内容
    $content = isset($post->post_content) ? $post->post_content : '';

    // 去除短代码
    $content = preg_replace('/(\[.*?\])/', '', $content);

    // 去除代码块(匹配 <code> 和 <pre> 标签,以及 Markdown 形式的 `````)
    $content = preg_replace('/<pre.*?>.*?<\/pre>|<code.*?>.*?<\/code>|```.*?```/is', '', $content);

    // 去除 HTML 标签
    $content = strip_tags($content);

    // 统计汉字字符数
    $chinese_count = mb_strlen(preg_replace('/[^\x{4e00}-\x{9fa5}]/u', '', $content), 'UTF-8');

    // 统计英文单词及标点符号
    preg_match_all('/[a-zA-Z0-9]+|[[:punct:]]/u', $content, $matches);
    $english_and_punct_count = count($matches[0]);

    // 计算总字数
    $total_count = $chinese_count + $english_and_punct_count;

    // 计算阅读时间(假设每分钟阅读 260 字)
    $read_time = ceil($total_count / 260);

    // 输出结果
    $output = '';
    $output .= '本文共有' . $total_count . '个字,阅读需要' . $read_time . '分钟。';

    return $output;
}

下一步就是修改single.php文件,但是当老郭打开子比的single.php文件的时候,却找不到添加代码的地方,因为子比主题的single.php文件里全都是引用的其他文件。比如文章的“主内容”引用的就是zib_single。

图片[3]-为使用子比主题的博客文章添加字数统计

没办法,接着找吧。在子比主题文件夹的/inc/function目录下终于找到了zib-single.php这个文件,打开后在大概300行左右的位置添加一行代码。

<span style="font-size: 18px; color: #00f; font-family: KaiTi"><?php echo count_words_read_time(); ?></span></p>

具体的位置及上下文如图所示。

图片[4]-为使用子比主题的博客文章添加字数统计

这段代码与网上的源代码相比,老郭进行了一定的修改,如果使用原来的,就呈现的效果就显得与子比主题不那么的协调,看起来也不太醒目。<span style=”font-size: 18px; color: #00f; font-family: KaiTi”>分别是字体的大小,颜色和字体,老郭选择了18号蓝色楷体,看起来的效果就舒服多了。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

    暂无评论内容