ホームページ >CMS チュートリアル >&#&プレス >キャプチャをWordPressコメントフォームと統合します
WP-RecaptchaやSecurimage-WP-FixedなどのWordPressプラグインディレクトリには、多くのCaptchaプラグインがあります。 このチュートリアルの目的は、さらに別のCaptchaプラグインを作成するのではなく、次のことです。
WordPress HTTP APIをプラグインでどのように使用できるかを示します。
WordPressコメントフォームに追加のフォームフィールドを含める方法。カスタムフィールドに追加された値を検証し、利用する方法
これ以上苦労せずに、プラグインの開発を始めましょう。
プラグインの開発
最初に、Recaptchaに向かい、ドメイン名を登録して、パブリックおよびプライベートAPIキーをつかんでください。
プラグインヘッダーを含めます。
Recaptchaチャレンジを出力するCAPTCHA_DISPLAY()メソッドは、comment_formアクションによってコメントフォームに追加されます。
wp_headアクションには、Captchaチャレンジに失敗した送信されたコメントを削除するコールバック関数delete_failed_captcha_comment()が含まれています。フィルターpreprocess_commentは、captchaフィールドが空にならないようにし、答えが正しいことを確認するために、validate_captcha_field()メソッドを呼び出します。
フィルターコメント_POST_REDIRECT CALL REDIRECT_FAIL_CAPTCHA_COMMENT()コメントRedirection URLにいくつかのクエリパラメーターを追加します。>>>>>
メソッドvalidate_captcha_field()の名前は、キャプチャフィールドが空にならないようにし、付属の回答が正しいことを確認することにより、キャプチャの回答を検証することを意味します。
validate_captcha_field()、具体的にはelseif条件ステートメントを詳しく見てみましょう。captchaの回答が正しいかどうかを確認するためにrecaptcha_response()に呼び出しが行われます。 以下は、recaptcha_response()。
のコードです
<span><span><?php </span></span><span> </span><span><span>/* </span></span><span><span>Plugin Name: Add reCAPTCHA to comment form </span></span><span><span>Plugin URI: https://www.sitepoint.com </span></span><span><span>Description: Add Google's reCAPTCHA to WordPress comment form </span></span><span><span>Version: 1.0 </span></span><span><span>Author: Agbonghama Collins </span></span><span><span>Author URI: http://w3guy.com </span></span><span><span>License: GPL2 </span></span><span><span>*/</span></span>recaptcha_response()がどのように機能するかを説明させてください
<span>class Captcha_Comment_Form { </span> <span>/** <span>@type string private key|public key */</span> </span> <span>private $public_key, $private_key; </span> <span>/** <span>@type string captcha errors */</span> </span> <span>private static $captcha_error;</span>投稿リクエストはエンドポイントに送信されますhttp://www.google.com/recaptcha/api/verify次のパラメーターを使用して。
privatekey:あなたのプライベートキー
<span>/** class constructor */ </span> <span>public function __construct() { </span> <span>$this->public_key = '6Le6d-USAAAAAFuYXiezgJh6rDaQFPKFEi84yfMc'; </span> <span>$this->private_key = '6Le6d-USAAAAAKvV-30YdZbdl4DVmg_geKyUxF6b'; </span> <span>// adds the captcha to the WordPress form </span> <span>add_action( 'comment_form', array( $this, 'captcha_display' ) ); </span> <span>// delete comment that fail the captcha challenge </span> <span>add_action( 'wp_head', array( $this, 'delete_failed_captcha_comment' ) ); </span> <span>// authenticate the captcha answer </span> <span>add_filter( 'preprocess_comment', array( $this, 'validate_captcha_field' ) ); </span> <span>// redirect location for comment </span> <span>add_filter( 'comment_post_redirect', array( $this, 'redirect_fail_captcha_comment' ), 10, 2 ); </span> <span>}</span>
CAPTCHAを解決したユーザーのIPアドレスをremoteip。
recaptcha_challenge_field/** Output the reCAPTCHA form field. */ public function captcha_display() { if ( isset( $_GET['captcha'] ) && $_GET['captcha'] == 'empty' ) { echo '<span><span><span><strong</span>></span>ERROR<span><span></strong</span>></span>: CAPTCHA should not be empty'; </span> } elseif ( isset( $_GET['captcha'] ) && $_GET['captcha'] == 'failed' ) { echo '<span><span><span><strong</span>></span>ERROR<span><span></strong</span>></span>: CAPTCHA response was incorrect'; </span> } echo <<<span><span><span><CAPTCHA_FORM</span> </span></span><span> <span><style type<span>='text/css'</span>></span><span><span><span>#submit</span> { </span></span></span><span><span> <span>display: none; </span></span></span><span><span> <span>}</span></span><span><span></style</span>></span> </span> <span><span><span><script</span> type<span>="text/javascript"</span> </span></span><span> <span>src<span>="http://www.google.com/recaptcha/api/challenge?k=<span><?= $this->public_key; ?></span>"</span>></span><span> </span></span><span><span> </span><span><span></script</span>></span> </span> <span><span><span><noscript</span>></span> </span> <span><span><span><iframe</span> src<span>="http://www.google.com/recaptcha/api/noscript?k=<span><?= $this->public_key; ?></span>"</span> </span></span><span> <span>height<span>="300"</span> width<span>="300"</span> frameborder<span>="0"</span>></span><span><span></iframe</span>></span> </span> <span><span><span><br</span>></span> </span> <span><span><span><textarea</span> name<span>="recaptcha_challenge_field"</span> rows<span>="3"</span> cols<span>="40"</span>></span> </span> <span><span><span></textarea</span>></span> </span> <span><span><span><input</span> type<span>="hidden"</span> name<span>="recaptcha_response_field"</span> </span></span><span> <span>value<span>="manual_challenge"</span>></span> </span> <span><span><span></noscript</span>></span> </span> <span><span><span><input</span> name<span>="submit"</span> type<span>="submit"</span> id<span>="submit-alt"</span> tabindex<span>="6"</span> value<span>="Post Comment"</span>/></span> </span>CAPTCHA_FORM; }の値に挑戦します。フォームから送信されます
応答
recaptcha_response_fieldの値は、フォームを介して送信されます
プラグインのアクティブ化については、以下の表示のようにWordPressコメントフォームにCaptChaが追加されます。
WordPressサイトでプラグインを使用する場合、またはコードを詳細に調査する場合は、GitHubからプラグインをダウンロードします。
私が再びあなたの道に来るまで、幸せなコーディング!キャプチャをWordPressコメントフォームと統合することに関するよくある質問(FAQ)
CaptchaをWordPressコメントフォームと統合することの重要性は何ですか?
キャプチャはボット生成スパムの防止に非常に効果的ですが、人間で生成されたスパムに対してそれほど効果的ではないかもしれません。このために、コメントモデレーションや特定の単語やIPアドレスのブラックリストなどの追加の測定値を使用することを検討してください。
以上がキャプチャをWordPressコメントフォームと統合しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。