プラグインWooCommerceのwoocommerce_updated_product_stockアクションの使用方法・解説

概要

woocommerce_updated_product_stock アクションは、WooCommerce の製品の在庫状況が更新された際にトリガーされるフックです。このアクションを使用することで、在庫が増えたり減ったりした場合に特定の処理を実行することができます。よく利用されるケースには以下のようなものがあります。

  1. 在庫変更に伴うカスタム通知の送信
  2. ログの記録
  3. 在庫記録の外部システムへの同期
  4. カスタムの在庫レポートの生成
  5. 特定の条件に基づいた販売促進アクションの実行
  6. 他のプラグインとの連携作業

構文

do_action( 'woocommerce_updated_product_stock', $product_id, $old_stock_value, $new_stock_value );

パラメータ

  • $product_id (int): 更新された製品の ID。
  • $old_stock_value (int): 更新前の在庫数。
  • $new_stock_value (int): 更新後の在庫数。

戻り値

このアクションは値を返しません。

使用可能なバージョン

  • WooCommerce バージョン: 2.6.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_updated_product_stock', 'notify_on_stock_update', 10, 3 );

function notify_on_stock_update( $product_id, $old_stock_value, $new_stock_value ) {
    // 在庫が更新されたときに管理者にメールを送信
    $to = get_option( 'admin_email' );
    $subject = '在庫が更新されました';
    $message = '製品ID: ' . $product_id . 'が在庫を更新しました。古い在庫: ' . $old_stock_value . ', 新しい在庫: ' . $new_stock_value;
    wp_mail( $to, $subject, $message );
}

このコードは、在庫が更新された際に管理者に通知するためのメールを送信します。

サンプルコード 2

add_action( 'woocommerce_updated_product_stock', 'log_stock_change', 10, 3 );

function log_stock_change( $product_id, $old_stock_value, $new_stock_value ) {
    // 在庫の変更をログファイルに記録
    $log_message = sprintf( 'Product ID: %d, Old Stock: %d, New Stock: %d', $product_id, $old_stock_value, $new_stock_value );
    error_log( $log_message );
}

このコードは、在庫の変更をサーバーのエラーログに記録します。

サンプルコード 3

add_action( 'woocommerce_updated_product_stock', 'sync_with_external_api', 10, 3 );

function sync_with_external_api( $product_id, $old_stock_value, $new_stock_value ) {
    // 外部 API に在庫データを送信
    $api_url = 'https://example.com/api/update-stock';
    $data = array(
        'product_id' => $product_id,
        'stock' => $new_stock_value,
    );

    wp_remote_post( $api_url, array(
        'method'    => 'POST',
        'body'      => json_encode( $data ),
        'headers'   => array('Content-Type' => 'application/json'),
    ));
}

このコードは、在庫の更新情報を外部 API に送信します。

サンプルコード 4

add_action( 'woocommerce_updated_product_stock', 'send_stock_alert', 10, 3 );

function send_stock_alert( $product_id, $old_stock_value, $new_stock_value ) {
    // 低在庫アラートをカスタマーに送信
    if ( $new_stock_value < 5 ) {
        // 決められたカスタマーへの通知を送る処理
    }
}

このコードは、新在庫が5未満のときにカスタマーに通知するためのトリガーを設定します。

サンプルコード 5

add_action( 'woocommerce_updated_product_stock', 'create_stock_update_record', 10, 3 );

function create_stock_update_record( $product_id, $old_stock_value, $new_stock_value ) {
    // 在庫更新のデータベースレコードを作成
    global $wpdb;
    $table_name = $wpdb->prefix . 'stock_updates';
    $wpdb->insert( $table_name, array(
        'product_id' => $product_id,
        'old_stock'  => $old_stock_value,
        'new_stock'  => $new_stock_value,
        'updated_at' => current_time('mysql'),
    ));
}

このコードは、在庫更新の情報をデータベースに記録します。

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


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