現在進行中のWooCommerce案件でタイトルのように、カートからアイテム情報を引っ張ってwp_mailを使って送る必要があり、技術顧問的な知人に相談してある程度方法と考えがまとまったので備忘録。

要件

  • ボタンをクリックしたらページ遷移なしにメールを送信
  • 見積もり番号をインクリメントしてユニークなものを付与する

実装

まずはbuttonにカスタムデータ属性でorderから情報をひっぱって格納する。

[code language=”html”]

<button data-first-name="susumu" data-family-name="seino"></button>

[/code]

もしくはJSで.cartitemを持ってきて配列のけつに継ぎ足して、ajaxで別途作成したmail.phpにリクエストを送って、PHPを実行する。

[code language=”javascript”]
$(‘button’).click(function(){
var items = [];
$(‘.cartitems li’).each(function(){
items.push({

})
});

console.log(items);

var firstName = $(this).attr(‘data-first-name’)
jQuery.ajax({
type: "POST",
url: ‘mail.php’
data: {
first_name: firstName,
items: items
}
});
});

[/code]

ほんでmail.phpで.cartitemの情報を受け取ってあとは適宜当てはめてwp_mailで送信。

[code language=”php”]

<?php
$first_name = $_POST[‘first_name’];
$items = $_POST[‘items’];

if( is_array( $items ) ) {
foreach( $items as $item ) {
echo $item->name;
echo $item->price;
}
}
else {
~
}

[/code]

ちなみにコードが完全に動く形ではないので適宜変更が必要。

参考URL