2016-05-01 9 views
0

を保存する前にデータをサニタイズすべてのオプション(YouTube URL、テキスト、チェックボックス、ラジオボタン)は、独自のメタキーenablog_post_optionsで保存されます。Wordpressのは、私は私の新しいWordPressのテンプレートのポストオプションを作成しようとしていますが、私は、私は保存する前に私のカスタムポストメタデータをサニタイズするか検証する方法がわからないupdate_post_meta

更新:

sanitize_text_field()$_POST['enablog_post_options']は、チェックボックス、テキストフィールドとよりを持っているので、私見、私は、単にsanitize_text_field()以上のものを必要とする、(私はポストを保存するときにすべてのチェックボックスがチェックされている)すべての私のコードを破損しました。すべてのグローバルな変数($ _POST、$ _ GETとなどのためwp_unslash()を使用することをお勧めします

$data = sanitize_text_field($_POST['enablog_post_options']); 

// Update the meta fields in the database. 
update_post_meta($post_id, 'enablog_post_options',$data); 

Validating Sanitizing and Escaping User Data

答えて

0

これを使用して、あなたのデータをサニタイズします)..あなたの必要に応じて任意のサニタイズ機能を使用してください。

$data = sanitize_text_field(wp_unslash($_POST['enablog_post_options'])); 

// Update the meta fields in the database. 
update_post_meta($post_id, 'enablog_post_options',$data); 
+0

Sanitize_text_fieldはすべてのコードを壊しています(私は投稿を保存するとすべてのチェックボックスがチェックされます)、IMHO $ _POST ['enablog_post_options']にチェックボックスやテキストフィールドなどがあるので、単にsanitize_text_field以上のものが必要です。 – Netshad

0

WordPressの基準に関するコーデックスを見てください:

0

最初。$_POST['enablog_post_options']は配列であると仮定すると、ループとして各要素を反復して配列としてサニタイズする必要があります。文字列ではなく、一度にすべての要素。

enablog_post_optionsの配列を調べ、各要素のデータ型に依存したsanitizaionのテクニックを決定します。 WP Codexからに始まることができます。

今、実際にどのようなデータ型が消毒されるのか理解しているので、update_post_meta()の組み込みのサニタイズアクション&カスタムフィルタを関数にフックすることができると考えられます。

だから誰でも、update_post_meta()here in the Core Metadata API source codeの重量挙げをしているupdate_metadata()関数のコードを調べることができます。

しかし一方で、それはサニタイズ:

    sanitize_key()wp_unslash()
  • メタキー。
  • メタ値wp_unslash()およびsanitize_meta()(これについては後で説明する)。
  • update_metadata()から呼び出されるwpdb::prepare()のデータベース保存クエリ - >wpdb::update();

でサニタイズする。

[カスタム]ポストメタデータをさらに安全にする便利な方法は、sanitize_meta()です。 update_metadata()は、作成しなければならない可能性のある既存のカスタムサニタイズフィルタを、メタフィールドサニタイズのプロセスにフックしています。これはsanitize_meta()によって行われます。このようなあなたのポストメタ(WPコーデックスsanitize_meta()記述の例で作業するので、あなただけのカスタムサニタイズフィルターを作ることができます

$meta_value = sanitize_meta($meta_key, $meta_value, $meta_type); 

は、すべてあなたのポストのメタパラメータを使用して、このようupdate_metadata()から呼び出されます、上記のリンク):いくつかのimagnaryコードを続けると

// --- sanitize_meta() call is commented out because it is called from update_metadata() 
// $clean_value = sanitize_meta('birth-year', $user_input, 'user'); 
function sanitize_birth_year_meta($year) { 
    $now = date('Y'); 
    $then = $now - 115; // No users older than 115. 
    if ($then > $year || $year > $now) { 
     wp_die('Invalid entry, go back and try again.'); 
    } 
    return $year; 
} 
add_filter('sanitize_user_meta_birth-year', 'sanitize_birth_year_meta'); 

sanitize_birth_year_meta()の代わり$yearに、あなたの$dataコンテンツを取得することになりますフィルタが呼び出されたときに消されます。

関連する問題