目次
第一章で簡単に紹介した機能、Lineのミニアプリ「LIFF」にwoocommerce の注文履歴リストを表示する実例を紹介します。
1 一つのHookで注文履歴を取得
hook “woocommerce_account_orders_endpoint”だけ実行すれば、すべての注文履歴を取得できます。
protected function do_action()
{
add_filter('woocommerce_my_account_my_orders_query', [$this, 'orders_query']);
ob_start();
do_action('woocommerce_account_orders_endpoint');
$this->main_contents .= '<h3>注文履歴</h3>';
$this->main_contents .= ob_get_clean();
$this->main_contents .=
sprintf(
'<h5>直近の注文履歴から最大 %s 件を表示します。</h5>',
self::ORDER_NUM_LIMIT
);
remove_filter('woocommerce_my_account_my_orders_query', [$this, 'orders_query']);
return true;
}
2 注文履歴の取得条件をカスタマイズ
表示エリアが限られているLineのミニアプリ内に特定ユーザーの履歴を表示するには、条件の追加指定は必然的なこと。
そこで フィルター hook “woocommerce_my_account_my_orders_query”を利用し、検索条件をオーバーライトします。
public function orders_query($arg)
{
$arg['customer'] = $this->user->ID; // 顧客を指定
$arg['post_status'] = array('wc-processing', 'wc-completed'); // 注文ステータスを指定
$arg['limit'] = self::ORDER_NUM_LIMIT; // 最大取得件数を指定
return $arg;
}
3 注文履歴の操作範囲を最小限に
hook “woocommerce_account_orders_endpoint” は あくまで endpoint「myaccount」webページに使うaction。通常ページに表示する内容は盛りたくさん!例えば、の場合は 「操作」の欄に「表示・請求書・納品書・支払方法」など同時に複数のボタンが現れるケースを設けています。ミニアプリのエリアが限られている為、「表示(.view)」だけにしましょう。
.woocommerce-button:not(.view){
/*表示ボタン以外の操作は非表示*/
display: none;
}
4 ユーザーに優しい 自動ログイン
Line内の注文履歴リストが表示されます。履歴の詳細をLine内で確認したい場合、サイトへログインする動作を挟まなければなりません。せっかく Line idTokenを取得しユーザーを特定できたのであれば、Line内の注文詳細を表示する際同時に自動でログインさせましょう。
endpoint「myaccount」指定のURLをpreg_match_allで抽出、一括で自動ログインURLへ変換します。
protected function set_mypage_auto_linelogin()
{
$pattarn = str_replace(['/', '.'], ['\/', '\.'], wc_get_page_permalink('myaccount')); // endpoint「myaccount」のURLを正規表現に
$pattarn = '/href="' . $pattarn . '(.*?)\"/i';
if (preg_match_all($pattarn, $this->main_contents, $matched_url)) {
$replace_from = array();
$replace_to = array();
foreach ($matched_url[0] as $index => $url) {
$replace_from[] = $matched_url[1][$index];
$replace_to[] = $this->line_login->get_auto_linelogin_url($matched_url[1][$index]);
}
$this->main_contents = str_replace($replace_from, $replace_to, $this->main_contents);
}
}
5 まとめ
オンラインショップでの注文はLine内でワンクリック表示できれば、サービスが向上し店への信頼度は高まるでしょう。
以前はBotモード(Messaging API)ステップ形式でユーザー情報を取得していましたが、2023年6月からポットモード(Messaging API)の無料枠が1000→200通まで低減されてしまいます。ミニアプリ(LIFF)へのシフトチェンジも選択肢の一つかもしれません。
そして、さらに詳しいソースコードを求めている方・LIFF開発に興味がありLIFEに関する意見を交換したい方は是非ログインしてコメントを残してください。
コードの作り方教えてもらえませんか?
LINEのリッチメニューから今みたいに流れを作りたいので。
分かりやすく教えてもらえませんか?
ご購読頂きありがとうございます。
一言では表せない高度な技術も伴いますので、恐れ入りますが石丸さんの技術を理解した上でお話を進めたいと思います。
先ず、自身で作成されたhpやシステムが有ればURLを添付。その内容に関して、有料作成したものか一から自分で構築したものなのかを教えて下さい。
wordpress・woocommerce・php&jqueryの知識力の程度も知れると話がスムーズです。
又、コチラからのシステム技術は個人(ECサイト含む)・企業どちらに転用されますか?具体的だとより鮮明です。