概要
woocommerce_widget_settings_sanitize_option
フィルタは、WooCommerceのウィジェット設定をサニタイズ(無害化)する際に利用されるフックです。このフィルタを使うことで、ウィジェットの設定値をカスタマイズし、特定のバリデーションや整形を行うことができます。
このフィルタは主に以下のような機能実装に使用されます:
- ウィジェットの設定に対するカスタムバリデーション
- 特定のフォーマットへの設定値の変換
- 不正なデータの除去
- デフォルト値の追加や変更
- 他のプラグインとの連携による設定の調整
- セキュリティ強化のためのサニタイズ処理
構文
add_filter('woocommerce_widget_settings_sanitize_option', 'custom_sanitize_option', 10, 2);
パラメータ
$value
: サニタイズ対象のオプションの値$option
: サニタイズされるオプションの名前
戻り値
- サニタイズされたオプションの値(文字列や配列)
使用可能なプラグインおよびバージョン
- WooCommerceバージョン:3.0以降
- WordPressバージョン:4.0以降
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプルコード1
add_filter('woocommerce_widget_settings_sanitize_option', 'custom_sanitize_text', 10, 2);
function custom_sanitize_text($value, $option) {
if ($option == 'my_custom_option') {
return sanitize_text_field($value);
}
return $value;
}
このサンプルコードは、特定のウィジェットオプションに対して、テキストフィールドとしてのサニタイズ処理を追加しています。
サンプルコード2
add_filter('woocommerce_widget_settings_sanitize_option', 'custom_sanitize_integer', 10, 2);
function custom_sanitize_integer($value, $option) {
if ($option == 'my_integer_option') {
return absint($value);
}
return $value;
}
このサンプルコードは、整数のウィジェットオプションに対して、負の値を無効化するためにabsint
関数を使ってサニタイズを行います。
サンプルコード3
add_filter('woocommerce_widget_settings_sanitize_option', 'custom_sanitize_array', 10, 2);
function custom_sanitize_array($value, $option) {
if ($option == 'my_array_option') {
return array_map('sanitize_text_field', (array)$value);
}
return $value;
}
このサンプルコードは、配列形式のオプションに対して、各要素をテキストフィールドとしてサニタイズします。
サンプルコード4
add_filter('woocommerce_widget_settings_sanitize_option', 'custom_sanitize_url', 10, 2);
function custom_sanitize_url($value, $option) {
if ($option == 'my_url_option') {
return esc_url($value);
}
return $value;
}
このサンプルコードは、URL形式のウィジェットオプションに対し、esc_url
を使用して安全なURLとしてサニタイズします。
サンプルコード5
add_filter('woocommerce_widget_settings_sanitize_option', 'custom_sanitize_checkbox', 10, 2);
function custom_sanitize_checkbox($value, $option) {
if ($option == 'my_checkbox_option') {
return !empty($value) ? 'yes' : 'no';
}
return $value;
}
このサンプルコードは、ウィジェットのチェックボックスのオプションをサニタイズし、値がある場合は「yes」、ない場合は「no」を返すようにしています。