プラグインWooCommerceのwoocommerce_admin_settings_sanitize_option_$OPTION_NAMEフィルタの使用方法・解説

概要

woocommerce_admin_settings_sanitize_option_$OPTION_NAMEフィルタは、WooCommerceプラグイン内で特定の設定オプションが保存される前に、その値をサニタイズ(無害化)するために使用されるフックです。このフィルタを利用することで、管理者が入力した値を検証し、適切な形式に変換してエラーを防ぐことができます。

このフィルタは、一般的に次のような機能を実装する際によく使われます。

  1. 入力されたデータの整合性を保つためのバリデーション
  2. 特定のデータ形式への変換(例:数値、文字列)
  3. 不正なデータの除外
  4. デフォルト値の設定
  5. 管理画面でのユーザビリティ向上のためのヒントや情報の追加
  6. 一貫性のあるデータ構造の確保

構文

add_filter('woocommerce_admin_settings_sanitize_option_$OPTION_NAME', 'your_function_name', 10, 2);

パラメータ

  • $option_name: サニタイズされるオプションの名前。
  • $value: 管理画面から送信されたオプションの値。

戻り値

サニタイズ処理された値、もしくはエラーメッセージ。

使用可能なプラグインとバージョン

  • WooCommerce: 新しいバージョンを含む全てのバージョン
  • WordPress: 4.0以降

サンプルコード

サンプル1: 数値入力の検証

このサンプルコードでは、数値のみがオプションとして許可され、それ以外の場合はデフォルト値に戻します。

add_filter('woocommerce_admin_settings_sanitize_option_max_order_quantity', 'sanitize_max_order_quantity', 10, 2);
function sanitize_max_order_quantity($value, $option) {
    if (!is_numeric($value)) {
        return 10; // デフォルト値を返す
    }
    return intval($value);
}

サンプル2: 文字列のトリム

このサンプルでは、入力された文字列から空白を削除し、サニタイズされた値を返します。

add_filter('woocommerce_admin_settings_sanitize_option_custom_text_field', 'sanitize_custom_text_field', 10, 2);
function sanitize_custom_text_field($value, $option) {
    return trim($value); // 空白をトリム
}

サンプル3: 特定の形式のemailを確認

入力されたメールアドレスが正しい形式であるか確認するサンプルです。無効な場合はデフォルトメールアドレスを返します。

add_filter('woocommerce_admin_settings_sanitize_option_support_email', 'sanitize_support_email', 10, 2);
function sanitize_support_email($value, $option) {
    if (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
        return 'support@example.com'; // デフォルトメールアドレス
    }
    return $value;
}

サンプル4: URLの検証

このサンプルコードでは、入力されたURLが正しい形式であるかを確認し、無効な場合はデフォルトのURLを返します。

add_filter('woocommerce_admin_settings_sanitize_option_store_url', 'sanitize_store_url', 10, 2);
function sanitize_store_url($value, $option) {
    if (!filter_var($value, FILTER_VALIDATE_URL)) {
        return 'http://default-store-url.com'; // デフォルトURL
    }
    return $value;
}

サンプル5: 複数選択肢のオプションを配列として保存

選択肢から複数の値を取得し、配列としてサニタイズして返すサンプルです。

add_filter('woocommerce_admin_settings_sanitize_option_selected_options', 'sanitize_selected_options', 10, 2);
function sanitize_selected_options($value, $option) {
    if (!is_array($value)) {
        return []; // 空の配列を返す
    }
    return array_map('sanitize_text_field', $value); // 各要素をサニタイズ
}

この関数のアクションでの使用可能性

アクション 使用例
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

この表は、woocommerce_admin_settings_sanitize_option_$OPTION_NAMEフィルタがどのアクションで利用されることがあるかを示しています。

この関数について質問する


上の計算式の答えを入力してください