WordPress系统有一个叫“Time to Read”(阅读时间) 的区块,从 6.9 版本开始正式加入。它能显示当前文章的预计阅读时间,甚至还能切换显示字数。

但这个功能有几个关键限制,导致你很难像调用普通函数那样“调用”它:

仅限区块编辑器:它主要作为一个区块(Block)使用,你需要在文章或模板里手动插入。

没有PHP函数:核心代码里并没有提供一个类似get_reading_time()的函数供开发者在模板里直接调用。

计算逻辑固定:它的默认阅读速度是189词/分钟,且没有提供设置选项来修改。对于中文内容,这个计算方式可能不太准确。

如果你想在前台实现类似效果

既然核心没有提供直接的调用方式,最可靠的方法还是通过代码来复现它的逻辑。你可以把下面这段代码加到主题的functions.php文件里,它模拟了系统的估算思路,同时针对中文做了优化:

function get_estimated_reading_time() {
    $post = get_post();
    if ( ! $post ) {
        return '';
    }

    // 获取纯文本内容,去除短代码和 HTML 标签
    $content = strip_shortcodes( $post->post_content );
    $content = wp_strip_all_tags( $content );

    // 计算字符数(中文按字符算更准确,英文单词也会被计入)
    $char_count = mb_strlen( $content, 'UTF-8' );

    // 设定阅读速度,这里设为 300 字符/分钟(可根据需要调整)
    $reading_speed = 300;

    // 计算分钟数,向上取整
    $minutes = ceil( $char_count / $reading_speed );

    return '阅读时间 ' . $minutes . ' 分';
}

在模板中调用:把下面这行代码加到你的single.php或内容模板里想显示的位置:

<?php echo get_estimated_reading_time(); ?>

如果你想让它自动显示在正文开头,可以改用过滤器:

add_filter( 'the_content', function( $content ) {
    if ( is_single() && in_the_loop() && is_main_query() ) {
        return '<p class="reading-time">' . get_estimated_reading_time() . '</p>' . $content;
    }
    return $content;
} );

这样你就能在前台看到和后台逻辑相似、但更适合中文的阅读时间提示了。如果希望精确调整阅读速度,修改代码里的$reading_speed数值即可。