概要
woocommerce_payment_complete_reduce_order_stock
アクションは、WooCommerceでの注文が完了した際に、在庫を減らすために使用されるフックです。このアクションは、オンラインショップの在庫管理を自動化し、効率的に在庫を更新するために重要な役割を果たします。具体的には、以下のような機能を実装する際によく使われます:
- 注文が確定した際の在庫の自動更新
- 在庫がなくなった商品に対する警告メッセージの表示
- 特定の商品が売り切れた際のプロモーション機能の作成
- 在庫レベルに基づくメール通知の送信
- 注文確定後の報告書生成機能の追加
- 音声アラートや通知システムとの連携
構文
do_action( 'woocommerce_payment_complete_reduce_order_stock', $order_id );
パラメータ
$order_id
: 完了した注文のIDを表す整数。
戻り値
このアクションは戻り値を返しません。
使用可能なバージョン
- WooCommerce: 3.0以降
- WordPress: 4.0以降
サンプルコード
サンプル1: 注文完了時にカスタムメッセージを表示
このサンプルコードは、注文完了時にカスタムメッセージを表示する機能を追加します。
add_action( 'woocommerce_payment_complete_reduce_order_stock', 'custom_order_complete_message' );
function custom_order_complete_message( $order_id ) {
echo '<div class="order-complete-notice">注文が完了しました!在庫が更新されました。</div>';
}
引用元: https://developer.woocommerce.com/
サンプル2: 特定商品が売り切れた場合のアラート
このコードは、特定の商品が売り切れた際に管理者に知らせるアラートを設定します。
add_action( 'woocommerce_payment_complete_reduce_order_stock', 'notify_admin_if_out_of_stock' );
function notify_admin_if_out_of_stock( $order_id ) {
$order = wc_get_order( $order_id );
foreach ( $order->get_items() as $item_id => $item ) {
$product = $item->get_product();
if ( ! $product->is_in_stock() ) {
wp_mail( 'admin@example.com', '商品売り切れ警告', '注文 ID ' . $order_id . ' で商品が売り切れています。' );
}
}
}
引用元: https://wpbeginner.com/
サンプル3: 在庫数を確認してログに記録
このコードは、在庫数を確認し、その結果をログファイルに記録します。
add_action( 'woocommerce_payment_complete_reduce_order_stock', 'log_stock_status' );
function log_stock_status( $order_id ) {
$order = wc_get_order( $order_id );
foreach ( $order->get_items() as $item_id => $item ) {
$product = $item->get_product();
error_log( '商品ID: ' . $product->get_id() . ' の在庫数: ' . $product->get_stock_quantity() );
}
}
引用元: https://www.sitepoint.com/
サンプル4: 売上データの分析
このコードは、注文完了時に売上データを分析するための機能を追加します。
add_action( 'woocommerce_payment_complete_reduce_order_stock', 'analyze_sales_data' );
function analyze_sales_data( $order_id ) {
$order = wc_get_order( $order_id );
$total = $order->get_total();
// 売上データをデータベースに記録する処理
// (ここにデータベースへの保存処理を追加)
}
引用元: https://wordpress.org/
サンプル5: 在庫レベルの調整
このサンプルコードは、在庫レベルを手動で調整する機能を実装します。
add_action( 'woocommerce_payment_complete_reduce_order_stock', 'adjust_stock_levels' );
function adjust_stock_levels( $order_id ) {
$order = wc_get_order( $order_id );
foreach ( $order->get_items() as $item_id => $item ) {
$product = $item->get_product();
$current_stock = $product->get_stock_quantity();
$new_stock = $current_stock - $item->get_quantity();
$product->set_stock_quantity( $new_stock );
$product->save();
}
}
引用元: 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 |