You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

WordPress单篇文章字数下限设置:不少于400/500字(PHP环境)

在WordPress中设置单篇文章的字数下限

嘿,这个需求我帮不少人实现过,WordPress本身没自带字数下限的设置,不过咱们可以通过主题的functions.php加几行代码搞定,不用装额外插件,直接又高效。

实现思路

我们用WordPress的save_post钩子,在文章保存/发布的瞬间拦截操作,检查文章纯文本的字数,如果没达到下限就阻止保存,同时给作者明确提示。

1. 设置不少于400字的限制

把这段代码复制到你当前激活主题的functions.php文件末尾(强烈建议用子主题,避免主题更新后代码丢失):

add_action('save_post', 'wp_check_post_min_length_400', 10, 3);
function wp_check_post_min_length_400($post_id, $post, $update) {
    // 跳过自动保存、修订版和非文章类型(比如页面),避免不必要的干扰
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
    if (wp_is_post_revision($post_id)) return;
    if ($post->post_type !== 'post') return;

    // 获取纯文本内容,去掉HTML标签避免格式代码干扰计数
    $content = strip_tags($post->post_content);
    // 英文用单词计数,中文的话看下面的注意事项调整
    $word_count = str_word_count($content);

    // 字数不足时阻止保存并给出提示
    if ($word_count < 400) {
        wp_die('抱歉,文章字数不能少于400字,当前字数:' . $word_count . '字。点击浏览器返回按钮修改后重新发布。');
    }
}

2. 调整为不少于500字的限制

其实就是把上面代码里的数字改成500就行,代码如下:

add_action('save_post', 'wp_check_post_min_length_500', 10, 3);
function wp_check_post_min_length_500($post_id, $post, $update) {
    // 跳过自动保存、修订版和非文章类型(比如页面)
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
    if (wp_is_post_revision($post_id)) return;
    if ($post->post_type !== 'post') return;

    // 获取纯文本内容,去掉HTML标签避免干扰计数
    $content = strip_tags($post->post_content);
    $word_count = str_word_count($content);

    // 字数不足时阻止保存并提示
    if ($word_count < 500) {
        wp_die('抱歉,文章字数不能少于500字,当前字数:' . $word_count . '字。点击浏览器返回按钮修改后重新发布。');
    }
}

重要注意事项

  • 中文计数优化:上面的str_word_count对英文单词计数很准,但中文场景下,更准确的计数方式是替换成:$word_count = mb_strlen(preg_replace('/\s+/', '', $content), 'UTF-8');,这样会去掉空格后统计真实的中文字符数。
  • 扩展到页面类型:如果想给页面(Page)也加字数限制,把代码里的if ($post->post_type !== 'post') return;改成if (!in_array($post->post_type, array('post', 'page'))) return;就行。
  • 子主题优先级:直接修改主题的functions.php会在主题更新后丢失代码,所以最好用子主题的functions.php来添加这段代码。

内容的提问来源于stack exchange,提问作者Oluwatemitope Adeala

火山引擎 最新活动