• カミナリツイッターカミナリtwitter
  • カミナリフェイスブックカミナリfacebook
  • カミナリインスタグラムカミナリinstagram

山陰の情報を発信するカミナリ

ナビ

29

JULY

ウェブFRIDAY 2022 / 7 / 29

Welcartでカート画面から次の画面に遷移するのを防ぐ処理の書き方

usces_filter_cart_check フックを使うことで対応できます。

 

まずはソースで引数を確認。

 $this->error_message = apply_filters( 'usces_filter_cart_check', $this->error_message );

※フィルターの記述箇所:usceshop.class.php の customerinfoメソッド内

エラーメッセージを返すだけのフィルタ処理で、この値がemptyでない場合にはエラーとして扱い、カート遷移処理を中断します。

 

このフックを使って買い物袋だけを購入することはできないという処理を記述してみました。

/**
* 買い物袋だけの購入をブロックする処理
*/
add_filter('usces_filter_cart_check', function($mes){
  $have_item = false; // 商品(レジ袋以外)を保持しているかのフラグ
  $kaimonobukuro = '買い物袋'; // 商品タイトルに含まれるキーワード

  global $usces;
  $cart = $usces->cart->get_cart();
  foreach($cart as $item){
    $post_id = $item['post_id'];
    $title = get_the_title($post_id);
    if(strpos($title, $kaimonobukuro) === false){
      $have_item = true;
    }
  }

  if(! $have_item){
    $mes .= "買い物袋だけのご購入はできません。";
  }
  return $mes;
});

※うっかり商品名ではなく投稿タイトルで判別するよう作ってしまっているので流用する際はご注意ください。

 

なお似たようなフックで、usces_filter_delivery_check という配送先と支払い方法を設定する画面から次の画面への遷移をブロックできるものがあります。

松本博之隠しプロフィール画像

TEXT by

松本 博之まつもとひろゆき)

1978年、鳥取県米子市生まれ。
株式会社マジックワード WEBシステムの開発・運用を担当。

WordPressの実績多数。表面的な使用方法を把握するだけでなく、WordPressのソースコードを読み解いて対応できます。
国家資格の応用情報処理技術者をなんとなくとりました。

この人が書いた他の記事を読む