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




