Welcart 在庫数が指定数を下回ったらメールで通知する方法

在庫数が注文時に指定数を下回ったらメールで通知するには、アクションフックの “usces_action_reg_orderdata” を利用して商品ごとに在庫数をチェックし指定数を下回っている場合にメールを送信するようにします。

在庫数が指定数を切ったら通知する

以下のコードは注文時に在庫数が100を下回った場合にメールで通知します。

/**
 * 在庫数が100を切ったら通知する
 */
function custom_usces_action_reg_orderdata( $args )
{
    global $usces;
    extract( $args );
    
    $usces_options = $usces->options;
    
    //
    foreach( $cart as $cartrow ){
        $post_id   = $cartrow['post_id'];
        $skus      = $usces->get_skus( $post_id );
        $sku       = $skus[0];
        $stocknum  = (int)$sku['stocknum']; //在庫数
        $item_code = $sku['code'];          //SKUコード 
        $item_name = $sku['name'];          //商品名
        $item_unit = $sku['unit'];          //単位


        //
        if ( $stocknum < 100 ) {
            //タイトル
            $subject = '【在庫僅少 / '. $item_name .' 在庫数:'. $stocknum.' '.$item_unit .'】サイト名';
            //メール本文
            $message  = '';
            $message .= '担当者さま'."\n";
            $message .= ''."\n";
            $message .= '以下の在庫数が減ってきております。'."\n";
            $message .= ''."\n";
            $message .= '=============================='."\n";
            $message .= '■品名:'.$item_name."\n";
            $message .= '■在庫:'.$stocknum.' '.$item_unit."\n";
            $message .= '=============================='."\n";
            $message .= ''."\n";
            $message .= '以上、ご確認お願い致します。'."\n";
            $message .= ''."\n";

            $to_name    = '担当者さま';
            $to_address = $usces_options['order_mail'];

            $from_address = $usces_options['sender_mail'];

            //送信内容セット
            $order_para = array(
                'to_name'      => $to_name,
                'to_address'   => $to_address,
                'from_name'    => get_option('blogname'),
                'from_address' => $from_address,
                'return_path'  => $from_address,
                'subject'      => trim(urldecode($subject)),
                'message'      => trim(urldecode($message)),
            );


            //送信実行
            $res = usces_send_mail( $order_para );

        }
    }
}
add_action('usces_action_reg_orderdata', 'custom_usces_action_reg_orderdata');

上記コードは未対応ですが、商品ごとに設定を変えたい場合は、商品ごとに通知する基準になる在庫数を管理するよう別途カスタマイズすればもう少し使える機能になると思います。

動作環境情報

"エックスサーバー" x10
"PHP" 7.4.13
"MySQL" 5.7
"WordPress" 5.8
"Welcart e-Commerce" 2.3.0

コメント

タイトルとURLをコピーしました