创建自定义验证码字段到WordPress评论表单,无需插件

时间:2015-01-14 作者:Jornes

不久前我确实问了一个类似的问题,但我没有得到一个有用的答案。我想再问一次。

实际上,我想添加一个名为“安全”的字段,以防止那些汽车人通过wordpress评论表单向我发送垃圾邮件。我对这个安全领域有一个明确的答案。我想我的意见表提交oif只有答案是正确的,否则意见不提交。

您可以在中看到示例my existing website.在我的网站上,我将答案设置为17。只有在答案正确的情况下,才能成功提交表单。

以下是我必须在我的网站上处理查询表的代码(但为了便于参考,我缩短了代码):

Php代码第1部分:

$security = $_POST[\'security\'];

if ($security=="10") {
   mail($to, $subject, $message, "Jornes");
   header("Location:/?security=submitted");
}

else {
   header("Location:/?security=error");
}
Php代码第2部分:

<?php
$s=$_GET[\'security\'];
if ($s=="error") {
   echo (\'<p class="errorMessage">Ops! Something went wrong at the security field. Please fix the error and retry!</p><p>&nbsp;</p>\');
   }
?>
我想问,我应该如何将此代码实现为wp-comment-post.php 或者你有其他的解决方案吗?非常感谢!

但是,我不打算使用插件。这里有专家吗?

1 个回复
SO网友:Privateer

签出默认注释模板。php文件:wp includes/comment模板。php

您需要替换参数:

$defaults = array(
    \'fields\'               => apply_filters( \'comment_form_default_fields\', $fields ),
    \'comment_field\'        => \'<p class="comment-form-comment"><label for="comment">\' . _x( \'Comment\', \'noun\' ) . \'</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>\',
    \'must_log_in\'          => \'<p class="must-log-in">\' .  sprintf( __( \'You must be <a href="%s">logged in</a> to post a comment.\' ), wp_login_url( apply_filters( \'the_permalink\', get_permalink( $post_id ) ) ) ) . \'</p>\',
    \'logged_in_as\'         => \'<p class="logged-in-as">\' . sprintf( __( \'Logged in as <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">Log out?</a>\' ), admin_url( \'profile.php\' ), $user_identity, wp_logout_url( apply_filters( \'the_permalink\', get_permalink( $post_id ) ) ) ) . \'</p>\',
    \'comment_notes_before\' => \'<p class="comment-notes">\' . __( \'Your email address will not be published.\' ) . ( $req ? $required_text : \'\' ) . \'</p>\',
    \'comment_notes_after\'  => \'<p class="form-allowed-tags">\' . sprintf( __( \'You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: %s\' ), \' <code>\' . allowed_tags() . \'</code>\' ) . \'</p>\',
    \'id_form\'              => \'commentform\',
    \'id_submit\'            => \'submit\',
    \'title_reply\'          => __( \'Leave a Reply\' ),
    \'title_reply_to\'       => __( \'Leave a Reply to %s\' ),
    \'cancel_reply_link\'    => __( \'Cancel reply\' ),
    \'label_submit\'         => __( \'Post Comment\' ),
);
覆盖表单中要插入所需项目的部分。例如,我通常使用after\\u notes部分,如下所示:

$defaults[\'comment_notes_after\'] .= \'<div>Your Code Here</div>\';
然后,您可以调用注释表单,如:

comment_form( $defaults );
这将把你的额外部分纳入评论表单。

最简单的方法是在注释表单上的comment\\u notes\\u after参数中添加内容。

例如:

$comment_fields = array(
   \'comment_notes_after\' => \'<p class="form-allowed-tags">\' . sprintf( __( \'You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: %s\' ), \' <code>\' . allowed_tags() . \'</code>\' ) . \'</p><p>Enter Code:<input name="security" value="" /></p>\';
);
apply_filters( \'comment_form_default_fields\', $comment_fields );
这应该会增加<p>Enter Code: <input name="security" value="" /></p> 在注释表单的“允许的字段”部分之后。

它需要第一部分,因为默认情况下,第一部分位于comment\\u notes\\u after字段中。

结束

相关推荐

为什么我会收到评论垃圾邮件,即使使用Akimet和Captcha?

我有点困惑,为什么我总是收到这么多垃圾评论。。。尽管I use both the Akismet and WP-reCAPTCHA plugins 在…上my WordPress blog!WP-reCAPTCHA 应该阻止机器输入的垃圾邮件,但我知道人类输入的垃圾邮件仍然会通过——而且人类垃圾邮件农场越来越多,这是真的。Akismet (内置于WordPress中!)应该在实时正负四个小时内匹配任何常见的垃圾邮件URL,对吗?这是一个协作的全球URL黑名单。我验证了Akismet和WP reCAPTCH