ゼロからWordPressプラグインを作成する際に留意すべき点

公開: 2022-01-02

WordPressプラグインは、実際には、WordPressサイトの機能を拡張または拡張する単一のファイルまたはファイルのグループです。

すべての新しい開発者は「コーディング方法」を知っていますが、WordPressでプラグインを作成する場合、開発者はコードの品質、セキュリティ、機能に加えて、WordPressプラグインを作成するためのいくつかの基本的な要件を覚えておく必要があります。

このガイドでは、WordPressプラグインを最初から作成するときに覚えておくべき重要な手順について説明します。

WordPressプラグインでは、理解しておくべき重要なことは、アクションやフィルターなどのWordPressフックです。 フックを使用すると、プラグインをWordPress関数内の特定の時間に定義された機能で実行できます。

アクションフックのリスト:https://codex.wordpress.org/Plugin_API/Action_Reference

 define( 'WP_DEBUG'、true);
--- WP_DEBUGオプションはWordPressバージョン2.3.1で追加されました。
---デフォルトでは、falseと見なされます。 ただし、通常、wp-config.phpファイルではtrueに設定されています。

–>プラグインフォルダに新しく作成したファイルにプラグイン固有の情報ヘッダーを追加します。

 / *
プラグイン名:お客様の声の投稿タイプ
プラグインURI:https://wordpress.org/plugins/testimonial-post-type/
説明:紹介文の投稿タイプを作成します。分類法とタグです。
バージョン:1.0
著者:Elsner TechnologiesPvt。 株式会社
著者URI:https://www.elsner.com
テキストドメイン:お客様の声-投稿タイプ
ドメインパス:/ languages
* /

関連:Elsnerの最近リリースされたWordPressプラグイン:投稿スライダーショートコード

–>すべてのプラグインには、一意の関数名、定義、およびクラス名が必要です。

これにより、プラグインが他のプラグインやテーマと競合するのを防ぎます。

–>プレフィックスとして__(二重アンダースコア)、wp_、または_(単一アンダースコア)を使用しないでください。

それらはWordPress自体のために予約されています。 クラス内で使用できますが、スタンドアロン関数としては使用できません

–>プラグインを直接ファイルアクセスから保護してください。

 if(!defined( 'ABSPATH'))exit; //直接アクセスした場合は終了します

—すべてのphpファイルの先頭に次のコードを配置することで、ファイルへの直接アクセスを回避できます。

–>不正アクセスを防ぐために、POST呼び出しにナンスを追加してください。

ノンス(1回使用する数)

WordPressのナンスは数字ではなく、数字と文字で構成されたハッシュです。 また、一度だけ使用することもありませんが、有効期限が切れるまでの「有効期間」は限られています。

通常、post_id174を削除するこのようなURLを生成します
http://example.com/wp-admin/post.php?post=123&action=trash

このURLは完璧ですが、安全ではありません。 攻撃者が投稿のIDを知っているとすると、攻撃者はあなたの知らないうちにこのURLの投稿を削除できます。

ナンスを追加すると、これを防ぐことができます。 たとえば、ナンスを使用する場合、WordPressがユーザー用に生成するURLは次のようになります。
http://example.com/wp-admin/post.php?post=123&action=trash&_wpnonce=b192fc4204

 $ nonce = wp_create_nonce( 'my-action_trash');

—これは単にナンス値自体を返します。

—次のようなURLに入力できるこの値

action = 'http://example.com/wp-admin/post.php?post = 123&action = trash&_wpnonce ='。$ nonce;

—URLで渡されるナンスを確認する

wp_verify_nonce($ _REQUEST ['_ wpnonce']、 'my-action_trash');

関連:プラグインをWordPressプラグインディレクトリに送信する方法は?

–> POST呼び出しをサニタイズ、エスケープ、および検証してください

サニタイズ:ユーザー入力のクリーニング
update関数やprepare()呼び出しを使用した場合でも、データベース内に生データを挿入してはなりません。

アクション呼び出しやURLリダイレクトを行うためにPOSTデータをサニタイズすると、XSSの脆弱性の可能性が低くなります。

sanitize_text_field($ _ POST ['post_name']);
—上記の機能を使用してデータをサニタイズできます。
—舞台裏では、関数は以下のことを行います。
無効なUTF-8をチェックします
単一の<文字をエンティティに変換します
すべてのタグを削除します
改行、タブ、余分な空白を削除します
オクテットを取り除く
—ヘルパー関数のsanitize _ *()クラス
https://developer.wordpress.org/plugins/security/securing-input/

検証:ユーザー入力の確認
サニタイズに加えて、すべての通話を検証する必要があります。 $ _POST呼び出しが数値のみである必要がある場合は、何かを通過させる前に、それがint()であることを確認してください。 データベースにデータを追加するときはいつでも、それは正しいデータである必要があります。

 intval($ _POST ['post']);
--- $ _ POST ['post']の場合

数値がある場合、trueを返します。 そうでない場合は、falseです。

エスケープ:出力の保護
エスケープとは、既存のデータを取得し、エンドユーザーにレンダリングする前にデータを保護することです。

出力でのエスケープ/キャストは、あいまいさを取り除くだけで、明確さを増します。

 <h4> <?php echo esc_html($ title); ?> </ h4>
--- esc_html()

HTML要素が、出力されているデータのセクションを囲む場合に使用する必要があります。

 esc_html(文字列$ text)

HTMLブロックのエスケープ。

 esc_html_e(文字列$ text)

HTML出力で安全に使用するためにエスケープされた翻訳済みテキストを表示します。

 esc_html __(文字列$ text)

$ textの翻訳を取得し、HTML出力で安全に使用できるようにエスケープします。

 <img alt = "" src = "<?php echo esc_url($ picture_url);?>
--- esc_url()

HTML要素の「src」および「href」属性のURLを含め、各URLで使用する必要があります。

 <?php echo esc_js($ value); ?>
--- esc_js()

インラインJavascriptを対象としています。

 <ul class = "<?php echo esc_attr($ Stored_class);?>">
--- esc_attr()

HTML要素の属性に出力される他のすべてで使用できます。

ノート :-
以下のリンクをチェックして、フォルダがどこにあり、どのように呼び出すのが最適かを理解してください。
https://codex.wordpress.org/Determining_Plugin_and_Content_Directories

可能であれば、データをwp_optionsテーブルに保存します。

これらすべての決定的な目標は、無効で安全でないデータが処理中または表示されないようにすることです。 掃除して、チェックして、すべてを脱出してください。 また、常に正しいデータを入力するようにユーザーを信頼しないでください。

関連: WordPressログインページをカスタマイズする方法