首页 问答 正文

如何在WordPress中添加反垃圾功能

注册会员 / 悠然自学 / 2023-06-11/ 浏览 134 次

WordPress中添加反垃圾功能的方法有多种,以下是其中几种常用方法:

  1. 安装反垃圾插件

WordPress有很多反垃圾插件可供选择,如Akismet、Antispam Bee等,可以直接在后台的插件管理里搜索并安装。其中Akismet是WordPress官方推荐的反垃圾插件,不过需要注册API key才能使用。

  1. 使用验证码

验证码是一种常用的反垃圾手段,可以通过阻止机器人发表评论或注册账号来减少垃圾信息。可以通过安装验证码插件或者修改主题文件实现。

如需在评论表单添加验证码,可以将以下代码添加到主题的comments.php文件中:

<div class="form-group">
    <label for="comment">评论 <span class="required">*</span></label>
    <?php comment_form(
        array(
            'comment_notes_before' => '',
            'logged_in_as' => '',
            'comment_field' => '<div class="form-group"><textarea id="comment" name="comment" cols="45" rows="8" required="required"></textarea></div>',
            'fields' => array(
                'author' => '<div class="form-group"><input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30" required="required" /></div>',
                'email' => '<div class="form-group"><input id="email" name="email" type="email" value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="30" required="required" /></div>',
                'url' => '',
            ),
            'comment_notes_after' => '',
            'class_submit' => 'btn btn-primary',
            'submit_field' => '<div class="form-group">%1$s %2$s</div>',
        )
    ); ?>
</div>
<div class="form-group">
    <?php echo recaptcha_get_html( 'PUBLIC_KEY_GOES_HERE' ); ?>
</div> 

其中,recaptcha_get_html()是验证码插件reCAPTCHA提供的函数,需要替换其中的PUBLIC_KEY_GOES_HERE为你的公钥。

  1. 关闭匿名评论

将匿名评论关闭可以阻止大量垃圾评论的发表,可以通过以下几种方式实现:

在后台设置中关闭“允许访客发表评论”选项。

在主题的functions.php文件中添加以下代码:

add_filter( 'pre_comment_user_agent', '__return_empty_string' );
add_filter( 'pre_comment_author_name', '__return_empty_string' );
add_filter( 'pre_comment_author_email', '__return_empty_string' ); 

该代码将禁止匿名用户提交评论时自动填写的信息。

  1. 限制评论字数和链接数

一些垃圾评论通常会包含大量链接和废话,可以通过限制评论的字数和链接数来减少垃圾信息。可以通过安装评论插件或修改主题文件实现。

如需限制评论字数,可以在主题的functions.php文件中添加以下代码:

function my_filter_comment_length( $commentdata ) {
    $min_comment_length = 20; // 最小评论字数
    $max_comment_length = 200; // 最大评论字数
    $comment_length = strlen( $commentdata['comment_content'] );
    if ( $comment_length < $min_comment_length ) {
        wp_die( '评论太短了,请输入至少 ' . $min_comment_length . ' 个字符。' );
    } elseif ( $comment_length > $max_comment_length ) {
        wp_die( '评论太长了,请不要超过 ' . $max_comment_length . ' 个字符。' );
    }
    return $commentdata;
}
add_filter( 'preprocess_comment', 'my_filter_comment_length' ); 

该代码将限制评论字数在20~200之间。

如需限制评论中的链接数量,可以在主题的functions.php文件中添加以下代码:

function my_filter_comment_links( $commentdata ) {
    $max_comment_links = 3; // 最大允许链接数
    $comment_links = preg_match_all( '/<as[^>]*href=['"]([^'"]+)['"][^>]*>/i', $commentdata['comment_content'], $matches );
    if ( $comment_links > $max_comment_links ) {
        wp_die( '评论中最多只能包含 ' . $max_comment_links . ' 个链接。' );
    }
    return $commentdata;
}
add_filter( 'preprocess_comment', 'my_filter_comment_links' ); 

该代码将限制评论中的链接数量不超过3个。

大家谈论
    我的见解