概要
woocommerce_variation_set_stock
アクションは、WooCommerceのバリエーション商品の在庫情報が設定されたときにトリガーされるフックです。このフックを使用すると、バリエーションごとの在庫が更新された後に特定のアクションを実行できます。一般的に以下のような機能を実装する際に使われます。
- 在庫が変更された際のカスタム通知
- 在庫更新後のデータベースへのロギング
- 在庫が無くなった商品の自動的な非表示
- 他のサービスへの在庫情報の同期
- 特定のユーザーに在庫変更のリマインダーを送信
- 在庫カウントに基づいたプロモーションのトリガー
構文
do_action( 'woocommerce_variation_set_stock', $variation );
パラメータ
$variation
(WC_Product_Variation): 在庫が設定されたバリエーションオブジェクト。
戻り値
このアクションは戻り値を持ちません。
使用可能なバージョン
- WooCommerce: 3.0.0 以降
- WordPress: 4.0 以降
サンプルコード
サンプルコード 1: 在庫変更の通知を送信
このコードは、バリエーション商品が在庫変更された際に、管理者にメール通知を送信します。
add_action('woocommerce_variation_set_stock', 'send_stock_notification', 10, 1);
function send_stock_notification($variation) {
$product_name = $variation->get_name();
$stock_quantity = $variation->get_stock_quantity();
$admin_email = get_option('admin_email');
wp_mail($admin_email, '在庫更新', "商品「{$product_name}」の在庫が{$stock_quantity}に更新されました。");
}
引用元: https://woocommerce.com/
サンプルコード 2: 在庫変更のロギング
在庫が変更された際に、データベースにログを記録します。
add_action('woocommerce_variation_set_stock', 'log_stock_change', 10, 1);
function log_stock_change($variation) {
global $wpdb;
$wpdb->insert('stock_log', array(
'variation_id' => $variation->get_id(),
'stock_quantity' => $variation->get_stock_quantity(),
'timestamp' => current_time('mysql')
));
}
引用元: https://woocommerce.com/
サンプルコード 3: 在庫ゼロの商品の非表示
在庫がゼロになった場合、商品を自動的に非表示にします。
add_action('woocommerce_variation_set_stock', 'hide_out_of_stock_variation', 10, 1);
function hide_out_of_stock_variation($variation) {
if ($variation->get_stock_quantity() <= 0) {
$variation->set_visible(false);
$variation->save();
}
}
引用元: https://woocommerce.com/
サンプルコード 4: 在庫変動に基づくプロモーション
在庫が特定の数に達した際にプロモーションをトリガーします。
add_action('woocommerce_variation_set_stock', 'trigger_promotion_on_stock_change', 10, 1);
function trigger_promotion_on_stock_change($variation) {
if ($variation->get_stock_quantity() <= 5) {
// プロモーションをトリガーするロジックをここに追加
// 例: クーポンを生成するなど
}
}
引用元: https://woocommerce.com/
サンプルコード 5: 他のサービスに在庫を同期
在庫情報が更新された後、外部APIと同期させるためのサンプルコードです。
add_action('woocommerce_variation_set_stock', 'sync_stock_with_external_service', 10, 1);
function sync_stock_with_external_service($variation) {
$stock_quantity = $variation->get_stock_quantity();
$external_service_url = 'https://example.com/api/sync-stock';
wp_remote_post($external_service_url, array(
'body' => json_encode(array('variation_id' => $variation->get_id(), 'stock' => $stock_quantity)),
'headers' => array('Content-Type' => 'application/json'),
));
}
引用元: https://woocommerce.com/
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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_variation_set_stock
アクションの使用例は含まれていません。