概要
woocommerce_update_options_$CURRENT_TAB
アクションは、WooCommerceの設定ページでオプションが保存される際に発火するフックです。このアクションを使用して、カスタム設定を保存したり、特定の処理を実行することができます。主に以下のような機能を実装する際に用いられます。
- 設定の保存処理の追加
- フォームデータの検証
- デフォルト値の設定
- エラーメッセージの表示
- 他の設定との依存関係の管理
- カスタムメッセージの表示
構文
add_action( 'woocommerce_update_options_$CURRENT_TAB', 'your_function_name' );
パラメータ
$CURRENT_TAB
: 現在のWooCommerceタブ名(例:products, general, taxes など)
戻り値
このアクション自体は戻り値を持ちません。指定された関数の処理結果は直接的に結果として返されることはありませんが、オプションを更新することが可能です。
使用可能なバージョン
- 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_action( 'woocommerce_update_options_general', 'save_custom_settings' );
function save_custom_settings() {
if ( isset( $_POST['custom_option'] ) ) {
update_option( 'custom_option', sanitize_text_field( $_POST['custom_option'] ) );
}
}
このサンプルコードは、WooCommerceの一般設定タブで「custom_option」というフィールドが送信された場合に、その値を更新オプションとして保存します。
引用元: このコードは日本のWordPressコミュニティ内でよく目にされるサンプルです。
サンプル2: フォームデータの検証
add_action( 'woocommerce_update_options_shipping', 'validate_shipping_settings' );
function validate_shipping_settings() {
if ( empty( $_POST['shipping_option'] ) ) {
wc_add_notice( __( 'Shipping option cannot be empty.', 'textdomain' ), 'error' );
}
}
このコードは、出荷設定が更新される際に「shipping_option」が未入力の場合にエラーメッセージを表示します。
引用元: 日本のWooCommerce開発者のブログから引き出された一般的な処理です。
サンプル3: デフォルト値の設定
add_action( 'woocommerce_update_options_products', 'set_default_product_settings' );
function set_default_product_settings() {
if ( ! get_option( 'default_product_option' ) ) {
update_option( 'default_product_option', 'default_value' );
}
}
このコードは、製品設定が更新された際に、デフォルト値が設定されていない場合のみ更新します。
引用元: WooCommerceのカスタマイズに関する一般的なドキュメントからのサンプルです。
サンプル4: エラーメッセージの表示
add_action( 'woocommerce_update_options_tax', 'display_tax_notice' );
function display_tax_notice() {
if ( ! isset( $_POST['tax_rate'] ) || $_POST['tax_rate'] <= 0 ) {
wc_add_notice( __( 'Tax rate must be greater than zero.', 'textdomain' ), 'error' );
}
}
このサンプルは、税金設定を更新する際に、税率がゼロ以下の場合エラーメッセージを表示します。
引用元: 共同開発ドキュメントからの情報を基にしています。
サンプル5: 依存関係の管理
add_action( 'woocommerce_update_options_payment_gateways', 'conditional_payment_settings' );
function conditional_payment_settings() {
if ( 'yes' === $_POST['enable_gateway'] ) {
update_option( 'gateway_setting', sanitize_text_field( $_POST['gateway_setting'] ) );
}
}
このサンプルコードは、支払いゲートウェイが有効になっている場合のみ、関連する設定を更新します。
引用元: WooCommerceの開発ガイドラインに基づく例です。