投稿の際は下記の情報をお書き添えください。
-------------------------------------------
WordPress のバージョン:(例 6.0.2)
Welcart のバージョン:(例 2.8.1)
PHP のバージョン:(例 8.0)
Welcart専用の拡張プラグインとバージョン:(例 DL Seller 3.4.1、SKU Select 1.4.2)
ご利用の親テーマとバージョン :(例 Welcart Basic 1.7.1)
ご利用の子テーマとバージョン :(例 Welcart Beldad 1.4)
症状を確認したブラウザ:
サーバー【重要】:(会社名、サービス名)
--------------------------------------------
フォーラムへの返信
-
投稿者投稿
-
2013年9月24日 1:53 AM 返信先: [解決済み] usces_filter_send_order_mail_shippingをフックするとメールの「会社名」「部署名」が空欄となる。 #67632dame1002参加者
こんにちは。
nanbu様、詳細なアドバイス有難う御座います。
お忙しいにも関わらず、
こういうふうに補足いただけるというのはとても嬉しいです。
「解決詰み」に変更し忘れていましたので変更しました。
今後とも宜しくお願いいします。
有難う御座いました。
2013年9月18日 1:42 AM 返信先: [解決済み] usces_filter_send_order_mail_shippingをフックするとメールの「会社名」「部署名」が空欄となる。 #67630dame1002参加者こんにちは。
巧くいきましたので方法を記載します。
参考URL
https://www.welcart.com/forum/topic.php?id=691#post-3123
【修正前】
$msg_shipping .= uesces_get_mail_addressform( ‘order_mail’, $entry, $order_id );
【修正後】
$msg_shipping .= uesces_get_mail_addressform( ‘order_mail’, $entry, $entry );
【対処方法】
$order_id を正しく渡せていなかったため、 $entryで渡した。
有難う御座いました。
dame1002参加者こんにちは。
ご返答有難う御座います。
なるほど、そういうことですか。確認しました。結論から言うと私のカスタマイズにバグがある可能性が高そうです。
管理画面から会員リストの住所欄を見ると「東京都」がなく「
八重洲~」という表示なっており、会員データ出力してエクセルで見たところ、仰る通りに都道府県項目が空白でした。これが原因ですね。
まだバグの切り分けできていませんが、今後の参考の為に私のカスタマイズの経緯を記載します。
1.会員機能無しで下記のカスタマイズ実装を開始
2.注文時の配送先入力項目の「国」と「都道府県」(常に東京)を非表示にする為、usces_filter_apply_addressformを使用し、国表示のtrをdisplay=none、都道府県表示のtrをdisplay=none及びvalue=”東京都”とする。
3.内容確認画面でも同様に「国」と「都道府県」が表示されないようにする為、usces_filter_apply_addressform_confirmを使用し、国と都道府県表示に対しdisplay=noneをする。
4.この時点では正常に機能。
5.会員機能有りで注文を行うと当該バグが発生していた。
以上です。
う~ん、切り分け難しそうです。
なにはともあれ、アドバイスいただけてよかったです。おかげでもうひとふんばりできます。
有難う御座いました^-^
dame1002参加者こんにちは。
早速のご対応、
有難う御座います。
バージョンアップしましたところ、
症状が発生しないことを確認しました。
yskysmr様、有難う御座います。
Welcartの強みは、
この対応の速さと、
質問時の解答にあると思います。
Welcartを選んでよかったです。
本当に有難う御座いました。
今後とも宜しくお願いします。
dame1002参加者こんにちは。
yskysmr様、
お忙しいなかご確認いただき有難う御座います。
私の方ではとりあえず運用対応で回避しようと思います。
修正は気長にお待ちしておりますので大丈夫です。
今後とも宜しくお願いします。
dame1002参加者こんにちは。
yskysmr様、お忙しいなかご返信有難う御座います。
私の場合はお客様情報の方も非表示にしたかったので、いただいた情報で試したところ、無事に解決いたしました。
有難う御座いました。
私の作成したソースを記載しておきます。
==================
add_filter(‘usces_filter_apply_addressform_confirm’, ‘my_usces_filter_apply_addressform_confirm’, 10, 3);
function my_usces_filter_apply_addressform_confirm($formtag, $type, $data) {
global $usces;
switch( $type ) {
case ‘confirm’:
case ‘member’:
$values = $data;
break;
case ‘customer’:
case ‘delivery’:
$values = $data[$type];
break;
}
$values = $usces->stripslashes_deep_post($values);
$formtag = ”;
$formtag .= usces_custom_field_info($data, ‘customer’, ‘name_pre’, ‘return’);
$formtag .= ‘<tr><th>’.__(‘Full name’, ‘usces’).'</th><td>’ . esc_html($values) . ‘ ‘ . esc_html($values) . ‘</td></tr>’;
$furigana_customer = ‘<tr><th>’.__(‘furigana’, ‘usces’).'</th><td>’ . esc_html($values) . ‘ ‘ . esc_html($values) . ‘</td></tr>’;
$formtag .= apply_filters( ‘usces_filter_furigana_confirm_customer’, $furigana_customer, $type, $values );
$formtag .= usces_custom_field_info($data, ‘customer’, ‘name_after’, ‘return’);
$customer_country = (!empty($usces_settings[$values])) ? $usces_settings[$values] : ”;
$formtag .= ‘
<tr><th>’.__(‘Zip/Postal Code’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>
<tr style=”display:none;”><th>’.__(‘Country’, ‘usces’).'</th><td>’ . esc_html($customer_country) . ‘</td></tr>
<tr><th>’.__(‘Province’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>
<tr><th>’.__(‘city’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>
<tr><th>’.__(‘numbers’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>
<tr><th>’.__(‘building name’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>
<tr><th>’.__(‘Phone number’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>
<tr><th>’.__(‘FAX number’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>’;
$formtag .= usces_custom_field_info($data, ‘customer’, ‘fax_after’, ‘return’);
$shipping_address_info = ‘<tr class=”ttl”><td colspan=”2″><h3>’.__(‘Shipping address information’, ‘usces’).'</h3></td></tr>’;
$shipping_address_info .= usces_custom_field_info($data, ‘delivery’, ‘name_pre’, ‘return’);
$shipping_address_info .= ‘<tr><th>’.__(‘Full name’, ‘usces’).'</th><td>’ . esc_html($values) . ‘ ‘ . esc_html($values) . ‘</td></tr>’;
$furigana_delivery = ‘<tr><th>’.__(‘furigana’, ‘usces’).'</th><td>’ . esc_html($values) . ‘ ‘ . esc_html($values) . ‘</td></tr>’;
$shipping_address_info .= apply_filters( ‘usces_filter_furigana_confirm_delivery’, $furigana_delivery, $type, $values );
$shipping_address_info .= usces_custom_field_info($values, ‘delivery’, ‘name_after’, ‘return’);
$shipping_country = (!empty($usces_settings[$values])) ? $usces_settings[$values] : ”;
$shipping_address_info .= ‘
<tr><th>’.__(‘Zip/Postal Code’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>
<tr style=”display:none;”><th>’.__(‘Country’, ‘usces’).'</th><td>’ . esc_html($shipping_country) . ‘</td></tr>
<tr><th>’.__(‘Province’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>
<tr><th>’.__(‘city’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>
<tr><th>’.__(‘numbers’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>
<tr><th>’.__(‘building name’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>
<tr><th>’.__(‘Phone number’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>
<tr><th>’.__(‘FAX number’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>’;
$shipping_address_info .= usces_custom_field_info($data, ‘delivery’, ‘fax_after’, ‘return’);
$formtag .= apply_filters(‘usces_filter_shipping_address_info’, $shipping_address_info);
return $formtag;
}
================
今回も大変助かりました。
masuda-clair様やyskysmr様のように、アドバイスいただける方がいるのはとても心強いです。
>お待たせして申し訳ありませんが、いずれ対応したいと思います。
いえいえ、無償で使用させていただけるだけでとても感謝しております。対応されたおりには、すぐに活用させていただきます。
有難う御座いました。
dame1002参加者こんにちは。
masuda-clair様、コメント有難う御座います。
とても有難いです。
早速アドバイスいただいた内容でやってみましたが、解決にはいたりませんでした。
一応フィルタの最初で、「global $value;」を宣言するパターンと「$values = $data[$type];」と宣言するパターンでやってみました。
私のやり方がまずい可能性もありますのでソース記載しておきます。
add_filter(‘usces_filter_shipping_address_info’, ‘my_usces_filter_shipping_address_info’, 10, 1);
function my_usces_filter_shipping_address_info($shipping_address_info) {
//global $value;
//$values = $data[$type];
$shipping_address_info = ‘<tr class=”ttl”><td colspan=”2″><h3>’.__(‘Shipping address information’, ‘usces’).'</h3></td></tr>’;
$shipping_address_info .= usces_custom_field_info($data, ‘delivery’, ‘name_pre’, ‘return’);
$shipping_address_info .= ‘<tr><th>’.__(‘Full name’, ‘usces’).'</th><td>’ . esc_html($values) . ‘ ‘ . esc_html($values) . ‘</td></tr>’;
$furigana_delivery = ‘<tr><th>’.__(‘furigana’, ‘usces’).'</th><td>’ . esc_html($values) . ‘ ‘ . esc_html($values) . ‘</td></tr>’;
$shipping_address_info .= apply_filters( ‘usces_filter_furigana_confirm_delivery’, $furigana_delivery, $type, $values );
$shipping_address_info .= usces_custom_field_info($values, ‘delivery’, ‘name_after’, ‘return’);
$shipping_country = (!empty($usces_settings[$values])) ? $usces_settings[$values] : ”;
$shipping_address_info .= ‘
<tr><th>’.__(‘Zip/Postal Code’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>
<tr style=”display:none;”><th>’.__(‘Country’, ‘usces’).'</th><td>’ . esc_html($shipping_country) . ‘</td></tr>
<tr><th>’.__(‘Province’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>
<tr><th>’.__(‘city’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>
<tr><th>’.__(‘numbers’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>
<tr><th>’.__(‘building name’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>
<tr><th>’.__(‘Phone number’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>
<tr><th>’.__(‘FAX number’, ‘usces’).'</th><td>’ . esc_html($values) . ‘</td></tr>’;
$shipping_address_info .= usces_custom_field_info($data, ‘delivery’, ‘fax_after’, ‘return’);
return $shipping_address_info;
}
お忙しいなか、ご意見いただきまして有難う御座います。
宜しくお願いします。
dame1002参加者こんにちは。
解決はしていませんが、
進展がありましたので記載させていただきます。
やはりusces_filter_shipping_address_infoのフックの引数に$valuesが無い為に、
値が取得できていなかったようです。
templete_func.phpを以下のように修正すると表示されました。
$formtag .= apply_filters(‘usces_filter_shipping_address_info’, $shipping_address_info,$values);
ただ、これをやれたとしてもお客様情報の方の国を非表示にはできません。
templete_func.phpをいじいることになってしまうのは避けたい為、結局のところ他の方法を探すしかないのでしょうか。
他に方法が御座いましたら教えていただけたらと思います。
宜しくお願いします。
dame1002参加者こんにちは。
aha様、コメント有難う御座います。
結論から言うと、aha様のご指摘いただいた内容で無事に解決しました。
心よりお礼申し上げます。有難う御座いました。
実をいうとそのトピックは以前に私も見ていたんですが、
その時はしっかり理解できていたわけじゃなくて「う~ん、これでもできないなあ」という状態だったのですが、
いまもう一度見てみると、いつのまにか当時よりも理解が深まっていたようで、
内容を理解できて無事に解決できました。
以下、function.phpに追記した私のソースです。
add_filter( ‘usces_filter_item_list_loopimg’, ‘my_filter_item_list_loopimg’, 10, 2);
function my_filter_item_list_loopimg($html, $content){
global $post;
$html = ‘
<div class=”loopimg”>
ID) . ‘”>’ . usces_the_itemImage(0, 140, 100, $post, ‘return’) . ‘
</div>
<div class=”loopexp”>
<div class=”field”>’ . $content . ‘</div>
</div>’;
return $html;
}
aha様、有難う御座いました。
dame1002参加者こんにちは。
たびたび失礼いたします。
当該の問題について自分なりにがんばっているのですが、相変わらず解決できていません。
お忙しいところ恐れ入りますが、アドバイスのほうをいただけるとさいわいです。
宜しくお願いします。
dame1002参加者こんにちは。
仰るとおりですね。
有難う御座いました。
別スレでまたご質問させていただくかと思いますが、宜しくお願いします。
dame1002参加者こんにちは。
アドバイスいただいた内容で試した続報です。
おかげさまでやりたい内容がほぼ出来ました。とりあえずこれで大丈夫そうです。有難う御座いました。
これに伴いもう1つ伺いたいのですが
(別でスレ立てした方が良い場合はご指摘ください。)、
ユーザーが発送・支払方法の画面を操作するさいに、配送希望日が初期値「指定しない」となっているのですが、お弁当屋さんなので「指定しない」ということはありえないので、「指定しない」をマスクして初期値に「最短配送希望日」を表示する方法はないでしょうか。
また、カスタマイズで対応できそうであれば、どこのあたりを見ればよいのでしょう。
お忙しいところお手数ですが、宜しくお願いします。
dame1002参加者こんにちは。
お忙しいところ返答くださり有難う御座います。
マニュアル見たりフォーラム調べたりしたのですが、出来ないと認識してまして、実際に少し設定したりしてやっぱりダメっぽいなあと思っていました。
営業日カンレダー設置したりはまだやっていないので、アドバイスいただいた内容で、設定でカバーできないか試してみます。
【イメージ】
ユーザーが配送日をカレンダーから選択または入力。
ユーザーが配送到着希望時間を入力または選択。
購入後、ユーザーへ到着日時が付記されたメールが送信。
購入後、クライアントへ到着日時が付記されたメールが送信。
試した結果もこちらに追記します。
ご返答有難う御座いました。
-
投稿者投稿