我打算创建一个代码过滤器,并在保存/提交wordpress帖子时设置最小字数。我试过这段代码。
function minWord($content)
{
global $post;
$content = $post->post_content;
if (str_word_count($content) < 300 ) //set this to the minimum number of words
wp_die( __('Error: your post is below the minimum word count. It needs to be longer than 300 words.') );
}
add_action('publish_post', 'minWord');
但问题是,当我输入< 300
字时,post
仍将其保存在数据库中。我现在的问题是,如果内容中有< 300
个单词无法保存到数据库中,我应该怎么做?
答案 0 :(得分:1)
在将帖子保存到数据库之前,将调用 wp_insert_post_data 挂钩。我们还会检查帖子的状态,以便此功能不会在其他管理页面上运行。
function enforceMinWordCount( $data, $post )
{
if ($data['post_status'] === 'publish' &&
str_word_count($post['post_content']) < 300 ) {
wp_die( __('Error: your post is below the minimum word count. It needs to be longer than 300 words.') );
}
return $data;
}
add_action( 'wp_insert_post_data', 'enforceMinWordCount', 99, 2 );
然而,这不是非常友好的用户体验,因为用户将失去他们的帖子并被发送到错误屏幕。我建议将帖子的状态设置为待处理,如果它不符合最低字数要求,并通过 admin_notices 挂钩通知用户它不能发布直到达到字数。
答案 1 :(得分:0)
使用'save_post'钩子。请尝试以下代码。
function minWord( $post_id ) {
$content = get_the_content( $post_id )
if (str_word_count($content) < 300 ) //set this to the minimum number of words
wp_die( __('Error: your post is below the minimum word count. It needs to be longer than 300 words.') );
return;
}
add_action( 'save_post', 'minWord' );