概要
woocommerce_product_before_set_stock
アクションは、WooCommerceの商品在庫が設定される前にフックされるもので、特定のカスタマイズや処理を実行するために使用されます。このアクションは、商品の在庫を変更する際に実行され、ショッピングサイトの在庫管理機能を拡張するための強力なツールとなります。
このアクションは以下のような機能を実装する際に特によく使われます。
- 在庫設定の前に特定の条件をチェックする
- 在庫変更時にカスタムロジックを追加する
- 在庫が設定される前に通知やログを生成する
- サードパーティのAPIと連携するための処理を追加する
- 在庫に基づいたプロモーションや割引の適用を制御する
- 商品入荷時のカスタムアクションをトリガーする
構文
do_action( 'woocommerce_product_before_set_stock', $product );
パラメータ
$product
: 在庫が設定される商品オブジェクト。
戻り値
このアクションは戻り値を持ちません。純粋にアクションフックとして動作します。
対応バージョン
- 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_product_before_set_stock', 'check_stock_before_set', 10, 1 );
function check_stock_before_set( $product ) {
if ( $product->get_stock_quantity() < 0 ) {
// 在庫数が0未満の場合の処理
$product->set_stock_quantity( 0 );
}
}
このコードは、商品在庫の数が0未満である場合に、自動的に在庫数を0に設定します。
サンプルコード2: 在庫変更時の通知
add_action( 'woocommerce_product_before_set_stock', 'notify_stock_change', 10, 1 );
function notify_stock_change( $product ) {
// 在庫が変更される前の通知を送信
$to = 'admin@example.com';
$subject = '在庫変更通知';
$message = $product->get_name() . ' の在庫が変更される予定です。';
wp_mail( $to, $subject, $message );
}
このコードは、商品の在庫が変更される前にメール通知を送信します。
サンプルコード3: 在庫設定前のカスタム処理
add_action( 'woocommerce_product_before_set_stock', 'custom_logic_before_stock_set', 10, 1 );
function custom_logic_before_stock_set( $product ) {
// ここに在庫設定前のカスタムロジックを追加
if ( $product->get_type() === 'variable' ) {
// バリエーション商品特有の処理
}
}
このコードは、商品のタイプがバリエーションである場合に特定のカスタム処理を実行します。
サンプルコード4: サードパーティAPIとの連携
add_action( 'woocommerce_product_before_set_stock', 'sync_with_external_api', 10, 1 );
function sync_with_external_api( $product ) {
// 外部APIと在庫数を同期
$stock_quantity = $product->get_stock_quantity();
// APIへ在庫数を送信する処理
}
このコードは、商品の在庫が設定される前に、外部APIと在庫数を同期する処理を実行します。
サンプルコード5: プロモーション条件設定
add_action( 'woocommerce_product_before_set_stock', 'apply_discount_if_low_stock', 10, 1 );
function apply_discount_if_low_stock( $product ) {
if ( $product->get_stock_quantity() < 5 ) {
$product->set_regular_price( $product->get_regular_price() * 0.9 ); // 10%割引
}
}
このコードは、在庫が5以下のときに商品に10%の割引を適用します。