概要
woocommerce_settings_api_sanitized_fields_$THIS->ID
フィルタは、WooCommerceの設定項目が保存される際に、入力されたデータを安全にサニタイズ(無害化)するために使用されます。このフィルタを活用することで、ユーザーが設定した値を処理し、特定の条件に応じて自動的に変更することができます。
このフィルタは、ショッピングサイトの管理機能、データのバリデーション、エラーメッセージのカスタマイズ、自動補完機能の実装、特定条件での値の変更、またはプラグイン間のデータ整合性の確保など、さまざまな機能を実装する際によく使われます。
このフィルタはWooCommerce 2.0以降で動作しており、WordPress 4.0以降のバージョンに対応しています。
構文
add_filter( 'woocommerce_settings_api_sanitized_fields_$THIS->ID', 'your_custom_function' );
パラメータ
array $sanitized_fields
: サニタイズされたフィールド値の連想配列。object $this
: 設定クラスのインスタンス。
戻り値
- サニタイズされたフィールド値の連想配列。
サンプルコード
サンプル1: 特定のフィールドの値を変更する
このサンプルでは、特定の設定フィールドの設定値をフィルタリングして変更する方法を示します。
add_filter('woocommerce_settings_api_sanitized_fields_your_section_id', 'custom_sanitize_settings');
function custom_sanitize_settings($sanitized_fields) {
if (isset($sanitized_fields['special_field'])) {
$sanitized_fields['special_field'] = sanitize_text_field($sanitized_fields['special_field']);
// 特定の条件に基づいて値を変更
if ($sanitized_fields['special_field'] === 'old_value') {
$sanitized_fields['special_field'] = 'new_value';
}
}
return $sanitized_fields;
}
このサンプルは、special_field
というフィールドの値を無害化し、特定の条件に基づいてその値を変更します。引用元はWoothemesの公式フォーラムです。
サンプル2: 追加のバリデーションを実行する
このサンプルコードは、入力されたデータに対して追加のバリデーションを実施し、不正な値を無視します。
add_filter('woocommerce_settings_api_sanitized_fields_your_section_id', 'custom_validate_settings');
function custom_validate_settings($sanitized_fields) {
if (!is_numeric($sanitized_fields['number_field'])) {
$sanitized_fields['number_field'] = 0; // 無効な入力を0に設定
}
return $sanitized_fields;
}
このサンプルは、数字として解釈できない値が入力された場合、そのフィールドの値を0にリセットします。引用元はWooCommerce Docsです。
サンプル3: 設定エラーメッセージをカスタマイズする
以下のサンプルでは、特定の入力に対してカスタムエラーメッセージを追加します。
add_filter('woocommerce_settings_api_sanitized_fields_your_section_id', 'custom_error_message');
function custom_error_message($sanitized_fields) {
if (empty($sanitized_fields['required_field'])) {
add_settings_error('your_section_id', 'error_code', __('このフィールドは必須です。', 'text-domain'));
}
return $sanitized_fields;
}
このサンプルでは、required_field
が空の場合にエラーメッセージを表示します。引用元はWP Beginnerです。
サンプル4: デフォルト値を設定する
このコードは、設定が提供されない場合にデフォルト値を設定します。
add_filter('woocommerce_settings_api_sanitized_fields_your_section_id', 'set_default_values');
function set_default_values($sanitized_fields) {
// 必要なフィールドにデフォルト値を設定
$sanitized_fields['default_field'] = !empty($sanitized_fields['default_field']) ? $sanitized_fields['default_field'] : 'デフォルト値';
return $sanitized_fields;
}
このサンプルは、default_field
の値が空の場合にデフォルトの値を設定します。引用元はTuts+です。
サンプル5: 配列データの整形
こちらのサンプルでは、配列形式のデータを整形して保存します。
add_filter('woocommerce_settings_api_sanitized_fields_your_section_id', 'format_array_data');
function format_array_data($sanitized_fields) {
if (isset($sanitized_fields['array_field']) && is_array($sanitized_fields['array_field'])) {
$sanitized_fields['array_field'] = array_map('sanitize_text_field', $sanitized_fields['array_field']);
}
return $sanitized_fields;
}
このサンプルでは、配列の各要素を無害化しています。引用元はSitePointです。
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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 |