タグ付けされた質問 「validation」

2
どのコンテキストでプラグインがデータの検証/サニタイズを担当しますか?
プラグイン/テーマのすべてのデータが、データベースに入る前とブラウザーに出力される前に、安全に処理されるようにします。私の問題は、ポストメタフィールドを保存するときなど、APIがサニタイズを処理する状況と、カスタム設定を保存するときなど、プラグイン/テーマの作成者がそれを行う責任がある状況があることです。 この質問の範囲については、ドメインレベルでのデータの検証については心配していません。たとえば、フォームのAgeフィールドが0〜120であるか、電子メールアドレスが有効であることを確認します。私はセキュリティだけに関心があります。たとえば、データベースへの保存時にSQLインジェクションを回避するためにSQLクエリをエスケープしたり、XSSを回避するためにHTMLテンプレートに出力されるデータを無害化します。 出力のサニタイズについては、変数をHTMLテンプレートにエコーするときなどにesc_html()、常に関数を使用する必要があることを知っていますesc_attr()。しかし、テンプレートタグを使用する場合はどうでしょうか。それらはすべて既に出力をサニタイズしますか?その場合、どのコンテキスト(一般的なHTML、タグ属性など)ですか?一部の関数には、さまざまなコンテキストのバリアントがあります(などthe_title_attribute()ですが、ほとんどはありません 入力サニタイズについては、$wpdb->prepare()手動クエリを作成するときに使用する必要があることは知っていますが、Settings APIを使用してプラグイン設定ページを作成する場合、またはカスタム投稿タイプの投稿メタフィールドを保存する場合はどうですか? 現在、関数を使用して関数がサニタイズするかどうかを調べるたびにコアを掘り下げてチュートリアルを読んでいますが、それはエラーが発生しやすく、時間がかかります。考えられるすべての状況と、APIがそれを処理するかどうかの包括的なリストを見つけたいと思っています。例えば、 APIの検証/サニタイズ 投稿メタを保存 update_postmeta() ユーザーメタを保存 update_user_meta() 投稿タイトルの出力-コンテキストに応じた適切なバリアントを使用します the_title() 等 手動で検証/サニタイズする必要があります Settings APIを使用してプラグインオプションを保存する。の3番目のパラメーターとしてコールバックを渡しますregister_setting()。 直接データベースクエリ:クエリをにラップします$wpdb->prepare()。 HTMLで変数を出力します。使用esc_attr()、esc_html()など 等 また、特定の状況ではAPIが提供するが、他の状況では提供しない理由を理解したいと思っています。私はそれがデータの未知の性質と関係があると仮定していますが、徹底的な説明を聞きたいです。


4
メタデータフィールドが有効でない場合、カスタム投稿タイプの投稿を公開しない
というカスタム投稿タイプ(CPT)がありeventます。いくつかのフィールドを持つタイプのメタボックスがあります。イベントを公開する前に、いくつかのフィールドを検証したいと思います。たとえば、イベントの日付が指定されていない場合、有益なエラーメッセージを表示し、将来の編集のためにイベントを保存しますが、そのイベントは公開されません。必要なすべての情報がないCPT投稿の「保留中」ステータスは、それを処理する正しい方法ですか? CPTフィールドの検証を行い、投稿が公開されないようにするが、将来の編集のために保存するためのベストプラクティスは何ですか。 どうもありがとう、ダーシャ

3
カスタムメニューページにadd_settings_errorを実装するにはどうすればよいですか?
プロフェッショナルWordPressのプラグイン開発の本は、正しく設定APIを使用する方法を詳細に説明し、それはまた、メニューとサブメニューを追加する方法を示していますが、残念ながらそれは、この任意の加入アップの例を提供していません。私はほとんどそれを機能させることができましたが、カスタムメニューページにadd_settings_errorを適切に実装する方法を理解できません。これが私のコードです: function settings_main_validate( $input ) { $valid['text_string'] = preg_replace( '/[^a-zA-Z]/', '', $input['text_string'] ); if ( $valid['text_string'] != $input['text_string'] ) { //add_setting_error: $title, $id, $error_message, $class add_settings_error( 'fields_main_input', 'texterror', 'Incorrect value entered!', 'error' ); } return $valid; } 上記の検証はadd_options_page、を使用してレンダリングされた設定でうまく機能しますが、でレンダリングされたページに設定エラーを表示しませんadd_menu_page。

3
カスタムメタボックスを検証するためのサンプルコード?
このサイトやGoogle検索でメタボックスカスタムフィールドを検証する例を見つけることはほとんどありません。 誰かが例を挙げたい場合は、ここに役立ついくつかのケースがあります 1)2011年5月 2 日として入力された日付は有効な日付形式です2)テキストボックスに入力された数字は数値で100〜500です 3)テキストボックスのテキストは25文字以上です 私の質問は、フィールドを検証するためのコードではなく、検証コードをどこに置くかです。JavaScriptまたはPHPを使用しますか?保存ポストをフックする場合、検証の失敗に対処するための手法-ポストを更新しますか?投稿を更新しませんか?-どのようにして更新を停止しますか?ユーザーに問題を通知する最良の方法。 すべての提案に感謝します。サンプルコードは、テクニックの単なる説明よりも役立ちます。(これは誰かが記事を書くのにとても良いトピックになるでしょう。)ありがとう
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.