抓取購物車的商品資料(名稱、單價、數量、小計)並用smtpJS.com送出訂單
header.php部份程式碼:
<!-- Modal --> <div class="modal fade" id="cart" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal-dialog modal-lg" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalLabel">Cart</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close" onclick="jQuery('#cart').modal('hide')"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <table class="show-cart table"> </table> <div>Total price: $<span class="total-cart"></span></div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal" onclick="jQuery('#cart').modal('hide')">Close</button> <button type="button" class="btn btn-primary" onclick="submitOrder();">Order now</button> </div> </div> </div> </div> <script> function submitOrder() { <?php global $current_user; wp_get_current_user(); if ( is_user_logged_in() ) { //如果WordPress使用者有登入的話 echo "let currentUserName = ".'"'.$current_user->display_name.'";'."rn"; echo "let userEMail = ".'"'.$current_user->user_email.'";'."rn"; } ?> console.log("Submit order...."); } </script> <?php bootscore_ie_alert(); ?>在order now的按鈕元素上加上onclick=”submitOrder();”,按下此按鈕後,呼叫submitOrder函式:
<script> function submitOrder() { let currentUserName="", userEMail=""; <?php global $current_user; wp_get_current_user(); if ( is_user_logged_in() ) { //如果WordPress使用者有登入的話 echo "currentUserName = ".'"'.$current_user->display_name.'";'."\r\n"; echo "userEMail = ".'"'.$current_user->user_email.'";'."\r\n"; } ?> if ( currentUserName !== "") { console.log("Submit order...."); } else { alert("送出訂單前,請先登入!!"); } } </script>觀察輸出的原始碼:
<script> function submitOrder() { let currentUserName = "u1085100"; let userEMail = "fgchen@gmail.com"; console.log("Submit order...."); } </script>上面顯示已經從WordPress抓取客戶名稱與email,如此一來,我們就可以使用JavaScript處理後續的動作。 接著,我們要抓取我們使用的購物車裏的商品資料產生訂單: 我們先用F12裏的Console來操作購物車物件。
let cartObject = shoppingCart.listCart();
function submitOrder() { let currentUserName = "", userEMail=""; <?php global $current_user; wp_get_current_user(); if ( is_user_logged_in() ) { //如果WordPress使用者有登入的話 echo "currentUserName = ".'"'.$current_user->display_name.'";'."rn"; echo "userEMail = ".'"'.$current_user->user_email.'";'."rn"; } ?> let cartObject = shoppingCart.listCart(); //取得購物車項目物件 let orderTotal = 0; console.log("Submit order...."); console.log("客戶名稱:" + currentUserName); console.log("客戶郵件:" + userEMail); console.log("本次訂單明細"); console.log("t商品名稱tttt單價t數量t小計"); console.log("----------------------------------------------------------"); for (let i = 0; i < cartObject.length; i++){ console.log("t" + cartObject[i]["name"] + "ttt" + cartObject[i]["price"] + "tt" + cartObject[i]["count"] + "tt" + cartObject[i]["total"] ); orderTotal += parseFloat( cartObject[i]["total"] ); } console.log("-----------------------------------------------------------"); console.log("訂單總金額:" + orderTotal + "元"); jQuery('#cart').modal('hide'); //關閉對話方塊 jQuery('.clear-cart').click(); //清空購物車 } </script>訂單輸出至Console的結果範例:
Submit order.... 客戶名稱:wells 客戶郵件:ronald@hk.edu.tw 本次訂單明細 商品名稱 單價 數量 小計 --------------------------------------------------------- 黑糖珍珠奶茶 60 1 60.00 抹茶珍珠奶茶 70 6 420.00 仙草凍奶茶 65 5 325.00 ---------------------------------------------------------- 訂單總金額:805元最後,將訂單透過smtpJS.com以郵件方式送出訂單
<script src="https://smtpjs.com/v3/smtp.js"></script> <script> function submitOrder() { let currentUserName = "", userEMail=""; <?php global $current_user; wp_get_current_user(); if ( is_user_logged_in() ) { //如果WordPress使用者有登入的話 echo "currentUserName = ".'"'.$current_user->display_name.'";'."\r\n"; echo "userEMail = ".'"'.$current_user->user_email.'";'."\r\n"; } ?> let cartObject = shoppingCart.listCart(); //取得購物車項目物件 let orderTotal = 0; console.log("Submit order...."); console.log("客戶名稱:" + currentUserName); console.log("客戶郵件:" + userEMail); console.log("本次訂單明細"); console.log("\t商品名稱\t\t\t\t單價\t數量\t小計"); console.log("----------------------------------------------------------"); let orderBody = "<table id=\"customers\" style=\"width:600px;\">\r\n" + "<tr><td colspan=\"4\"><h1 style=\"text-align:center;\">新訂單明細</h1></td></tr>\r\n"+ "<tr><th>商品名稱</th><th>單價</th><th>數量</th><th>小計</th></tr>\r\n"; for (let i = 0; i < cartObject.length; i++){ console.log("\t" + cartObject[i]["name"] + "\t\t\t" + cartObject[i]["price"] + "\t\t" + cartObject[i]["count"] + "\t\t" + cartObject[i]["total"] ); orderBody += "<tr><td style=\"text-align:center;\">" + cartObject[i]["name"] + "</td>\r\n" + "<td style=\"text-align:center;\">" + cartObject[i]["price"] + "</td>\r\n" + "<td style=\"text-align:center;\">" + cartObject[i]["count"] + "</td>\r\n" + "<td style=\"text-align:center;\">" + cartObject[i]["total"] + "</td></tr>\r\n" ; orderTotal += parseFloat( cartObject[i]["total"] ); } orderBody += "<tr><td colspan=\"4\" style=\"text-align:center;\"><h2>訂單總金額:" + orderTotal + "元</h2></td></tr></table>\r\n"; console.log("-----------------------------------------------------------"); console.log("訂單總金額:" + orderTotal + "元"); console.log("底下是orderBody變數的輸出:"); console.log(orderBody); Email.send({ Host : "wda1902.stu.fgchen.com", Username : "wda1902", Password : "232131", To : 'fgchen@gmail.com', From : "wda1902@wda1902.stu.fgchen.com", Subject : "新訂單", Body : orderBody }).then( // message => alert(message) ); jQuery('#cart').modal('hide'); //關閉對話方塊 jQuery('.clear-cart').click(); //清空購物車 } </script>One more thing, 對話方塊要關閉,購物車要清空:
jQuery('#cart').modal('hide'); jQuery('.clear-cart').click();