Re: custom fieldの内容をサンキューメールに表記したい

2013 年 8 月 29 日

ホーム フォーラム 使い方全般 custom fieldの内容をサンキューメールに表記したい Re: custom fieldの内容をサンキューメールに表記したい

#67487

omame
参加者

もう解決されていたらすみません。

本体のカスタマイズよりは、

同ファイルusc-e-shop/functions/function.phpの451行にある便利なfilterを使った方がいいかと思います↓。

$msg_body .= apply_filters('usces_filter_send_order_mail_body', NULL, $data);

あとカスタムフィールドの取得には、「get_post_custom($post_id)」です。

※WordPressの関数です

filterの使い方をご存知かどうか分かりませんが、

一例としてテーマのfunctionに

add_filter('usces_filter_send_order_mail_body', 'my_filter_send_order_mail_body', 10, 2);
function my_filter_send_order_mail_body($foo, $data){
//$fooはNULL
global $usces;
$entry = $usces->cart->get_entry();

$c_fields = array();
if(isset($data['order_cart'])){
$carts = maybe_unserialize($data['order_cart']);
if(is_array($carts)){
foreach($carts as $cart){
//カート内からpost_idを参照し、get_post_customでカスタムフィールド全取得
$p_custom = get_post_custom($cart['post_id']);
if($p_custom['取り出したいkey'][0]){
//商品名
$item_name = $p_custom['_itemName'][0];
//keyを商品名、valueをURL
$c_fields[$item_name] = $p_custom['取り出したいkey'][0];
}
}
}
}

$text = '';
if(count($c_fields) > 0){
$text .= __('【無料プレゼントPDFファイルのURL】','usces') . "rn";
$text .= usces_mail_line( 1, $entry['customer']['mailaddress1'] );//*******************
foreach($c_fields as $c_key => $c_field){
$text .= "商品名:" . $c_key . "rn";
$text .= "URL:" . $c_field . "rn";
}
$text .= "rn";
}
return $text;
}

と書くと、本体をカスタマイズすることなく、購入商品名と記載したいURLが併せてメール本文の一番下に登場するかと思います。

「取り出したいkey」(2か所)には、取り出したいカスタムフィールドのkeyを入れて下さい

あと、上のままだと、本文を確認する際に受注データを都度入れないと確認できないと思うので、

add_filterの第一引数「usces_filter_send_order_mail_body」を、「usces_filter_order_confirm_mail_body」に変えると、

管理画面→受注リスト→個別編集→メール・印刷フィールド表示→注文確認メールとかで本文内容のチェックがぱっとできます。

※もし他の人が管理画面からのメールを使っている時は当然避けましょう。意図せずそれで送信される可能性がありますので。

問題なければ引数を元に戻して、最終的な動作確認をすると楽です。

カート内の商品数は1個に限るのかどうかはよく分からないので、複数商品が入った場合でも対応できるよう書いてます。ただ、ぱぱっと書いたものなので、あくまで参考にしてもらって、やりたいようにいじってもらえれば幸いです。