ホームページ >CMS チュートリアル >&#&プレス >キャプチャをWordPressコメントフォームと統合します

キャプチャをWordPressコメントフォームと統合します

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌オリジナル
2025-02-18 10:32:38754ブラウズ

キャプチャをWordPressコメントフォームと統合します

キーテイクアウト

  • キャプチャをWordPressコメントフォームと統合すると、ボットがスパムコメントの送信を阻止したり、これらのコメントのモデレートと削除に費やした時間とリソースを節約できます。
  • チュートリアルでは、WordPress HTTP APIをプラグインで使用する方法を示し、WordPressコメントフォームにフォームフィールドを追加し、カスタムフィールドに追加された値を検証および利用します。
  • チュートリアルで開発されたCaptchaプラグインには、Captchaフォームが空のままになっている場合、またはユーザーがチャレンジに失敗した場合、エラーメッセージが含まれています。また、Captchaチャレンジに失敗した提出されたコメントを削除します。
  • チュートリアルでは、WordPressコメントシステムの汎用性を強調しているため、ユーザーはコメントフォームに追加のフォームフィールドを追加して、言及されたフィルターとアクションのおかげで目的の機能を実装できます。
  • 長年にわたり、WordPressは人気が高まっているため、スパマーの標的になっています。
  • 残念ながら、WordPressなどの人気のあるプラットフォームで構築されたWebサイトを探してWebをクロールする目的である自動化されたソフトウェアが存在し、数百、数千のスパムコメントを提出することが存在します。スパムのコメントは非常に迷惑です。彼らは、それらをモデレートして削除することに関して、私たちの貴重な時間を消費します。
  • 私と同じようにスパムコメントが嫌いであり、それらと戦う方法を知りたいと思っています。ボットがスパムのコメントを送信するのを阻止する1つの方法は、Captchaをコメントフォームに統合することです。
以前のチュートリアルでは、CaptchasをWordPressログインと登録フォームに統合する方法を学びました。 同様の方法で、CaptChaをWordPressコメントシステムと統合する方法を説明します。

WP-RecaptchaやSecurimage-WP-FixedなどのWordPressプラグインディレクトリには、多くのCaptchaプラグインがあります。 このチュートリアルの目的は、さらに別のCaptchaプラグインを作成するのではなく、次のことです。

WordPress HTTP APIをプラグインでどのように使用できるかを示します。

WordPressコメントフォームに追加のフォームフィールドを含める方法。

カスタムフィールドに追加された値を検証し、利用する方法

これ以上苦労せずに、プラグインの開発を始めましょう。

プラグインの開発

最初に、Recaptchaに向かい、ドメイン名を登録して、パブリックおよびプライベートAPIキーをつかんでください。

プラグインヘッダーを含めます。

  1. Recaptchaのプライベートキーと公開キーを保存する3つのプロパティとCaptchaエラーメッセージを作成するクラスを作成します(Captchaフォームが空のままで、ユーザーがチャレンジに失敗したときにエラーが生成されます)。
  2. クラスマジックコンストラクターメソッドには、2組のアクションとフィルターフックが含まれます。
  3. コードの説明:まず、私のRecaptchaのパブリックキーとプライベートキーはクラスのプロパティに保存されます。

    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にいくつかのクエリパラメーターを追加します。 Captcha Challengeを出力するCaptcha_display()のコードは次のとおりです。 さらに、現在のページURLに添付されているクエリ文字列があるかどうかを確認し、Redirect_Fail_Captcha_comment()

    >>>>>

    メソッド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

    の値は、フォームを介して送信されます

      フォームによって送信されたデータの課題と応答の投稿データは、それぞれ$課題と$の応答に保存されます。 $ _SERVER ["Remote_addr"]ユーザーのIPアドレスをキャプチャし、$ remote_ip。
    • wordpress http api投稿パラメーターは配列形式であるため、以下のコード。
    • recaptcha_post_request()は、postパラメーター/ボディを受け入れるHTTP APIのラッパー関数であり、Recaptcha APIにリクエストを行い、CAPTCHAテストが渡され、そうでない場合はtrueを返します。
    • Captchaチャレンジに失敗したか、フィールドを空のままにしたユーザーが作成したコメントは、delete_failed_captcha_comment()によって削除されます
    • 最後に、プラグインクラスを閉じます。
    • プラグインクラスのコーディングが完了しました。クラスを機能させるには、そうするようにインスタンス化する必要があります:

    プラグインのアクティブ化については、以下の表示のようにWordPressコメントフォームにCaptChaが追加されます。キャプチャをWordPressコメントフォームと統合します

    wlap up

    このチュートリアルの最後に、コメントフォームに追加のフォームフィールドを追加し、言及されたフィルターとアクションのおかげでコメントシステムに希望するすべての機能を実装できるはずです。

    WordPressサイトでプラグインを使用する場合、またはコードを詳細に調査する場合は、GitHubからプラグインをダウンロードします。

    私が再びあなたの道に来るまで、幸せなコーディング!

    キャプチャをWordPressコメントフォームと統合することに関するよくある質問(FAQ)

    CaptchaをWordPressコメントフォームと統合することの重要性は何ですか?

    ​​

    キャプチャをWordPressコメントフォームと統合することは、いくつかの理由で重要です。第一に、それはあなたのウェブサイトを乱雑にして本物のユーザーを阻止することができるスパムのコメントを防ぐのに役立ちます。第二に、セキュリティの追加レイヤーを追加し、ボットや自動化されたスクリプトからサイトを保護します。最後に、スパムコメントのモデレートと削除に費やす時間とリソースを節約します。フォームは、使用しているCaptchaプラグインの設定を介して実行できます。ほとんどのプラグインは、Captchaの複雑さ、デザイン、レイアウトを変更するオプションを提供します。独自のカスタムCaptchaを作成することもできます。これらには、スパムフィルタリングサービスであるAkismet、およびHoneypotが含まれます。これは、非表示のフォームフィールドと対話することでボットをだまして自分自身を明らかにする方法です。 🎜>絶対に。 Captchaは、連絡先フォーム、登録フォーム、ログインフォームなど、WordPressサイトの任意のフォームと統合できます。これにより、サイト全体に追加のセキュリティとスパム予防が提供されます。

    CaptchaがWordPressコメントフォームに取り組んでいない場合はどうすればよいですか?最初に、プラグインが適切にインストールされ、アクティブ化されていることを確認します。問題が続く場合は、ブラウザのキャッシュをクリアしたり、他のプラグインを無効にして競合があるかどうかを確認してみてください。アクセス可能で、オーディオキャプチャまたはロジックベースのCaptchaを使用することを検討してください。これにより、ユーザーに簡単な質問に答えるように依頼します。また、CaptchaプラグインがWebコンテンツアクセシビリティガイドライン(WCAG)に準拠していることを確認してください。

    キャプチャはあらゆる種類のスパムに対して効果的ですか?

    キャプチャはボット生成スパムの防止に非常に効果的ですが、人間で生成されたスパムに対してそれほど効果的ではないかもしれません。このために、コメントモデレーションや特定の単語やIPアドレスのブラックリストなどの追加の測定値を使用することを検討してください。

    CaptchaをWordPressコメントフォームと統合することはサイトのパフォーマンスに影響しますか?サイトのパフォーマンスに大きく影響しないでください。ただし、他のプラグインと同様に、いくつかのリソースを使用します。スローダウンに気付いた場合は、軽量のCaptchaプラグインを使用するか、他の方法でサイトのパフォーマンスを最適化することを検討してください。プラグインを使用せずにCaptchaをWordPressコメントフォームに統合することができます。これは、高度なコーディング知識が必要であり、ほとんどのユーザーには推奨されません。プラグインを使用すると、プロセスが簡素化され、Captchaが正しく実装されるようになります。これにより、最新のセキュリティ機能があり、プラグインがWordPressの最新バージョンと互換性があることが保証されます。

以上がキャプチャをWordPressコメントフォームと統合しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。