custom fieldの内容をサンキューメールに表記したい
-
投稿者投稿
-
2013年8月23日 4:36 AM #53080kaichi参加者
動作に関するご質問の場合は必ずご記入ください。
WordPress のバージョン:3.6
Welcart のバージョン:1.3.5
ご利用のテーマ:Welcart Default Theme
症状を確認したブラウザ:
サーバー(会社名、サービス名):ロリポップ、ロリポプラン
SSLの利用: 無し
WordPress のパーマリンク設定:custmon /%postname%/
商品のcustom fieldの内容を自動送信のサンキューメール(ご注文内容の確認)に含める方法はあるのでしょうか?
具体的には商品購入者には、無料でプレゼントするpdfファイルをダウンロードするURLをcustom fieldに記載しようと考えています。
usc-e-shop/functions/function.phpの443行あたりを変更して対応したいと思いますが、custom fieldを参照する関数はあるのでしょうか?
現状では、
$msg_body .= __(‘【無料プレゼントPDFファイルのURL】’,’usces’) . “rn”;
$msg_body .= usces_mail_line( 1, $entry );//********************
《ここでcustom fieldに記載したurlを表示したい》
ご教授いただければ助かります。よろしくお願いいたします。
2013年8月29日 9:11 AM #67487omame参加者もう解決されていたらすみません。
本体のカスタマイズよりは、
同ファイル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個に限るのかどうかはよく分からないので、複数商品が入った場合でも対応できるよう書いてます。ただ、ぱぱっと書いたものなので、あくまで参考にしてもらって、やりたいようにいじってもらえれば幸いです。
2013年8月30日 2:34 AM #67488kaichi参加者omame様
御指導ありがとうございます
指示に従いファイル修正すると当方の希望通りの動作が確認できました
早期に解決することができ、本当にありがとうございました
これからもどうぞ宜しくお願いいたします
-
投稿者投稿
- このトピックに返信するにはログインが必要です。