最初。$_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
コンテンツを取得することになりますフィルタが呼び出されたときに消されます。
Sanitize_text_fieldはすべてのコードを壊しています(私は投稿を保存するとすべてのチェックボックスがチェックされます)、IMHO $ _POST ['enablog_post_options']にチェックボックスやテキストフィールドなどがあるので、単にsanitize_text_field以上のものが必要です。 – Netshad