概要
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」を返すようにしています。