2026年5月20日
2026年5月20日
WooCommerceのクーポン設定方法(割引の種類・利用制限・送料無料・コードでの作成と自動適用)
WooCommerce のクーポンは、管理画面の「マーケティング」→「クーポン」から作成します。割引の種類は3つあり、最小額・有効期限・利用回数・対象商品などの条件を組み合わせられます。
この記事の画面名とコードは、2026年11月時点の WooCommerce 11.2(日本語表示)と WordPress 7.1 で確認しています。
クーポン機能が有効か確認する
クーポンを使うには、「WooCommerce」→「設定」→「一般」の「クーポンを有効化」で、「クーポンコードの使用を有効化」にチェックが入っている必要があります。新しく入れた WooCommerce では最初からチェックが入っています。
同じ場所にある「逐次クーポン割引を計算します」にチェックを入れると、クーポンを複数使ったときに、1枚目は元の価格、2枚目は1枚目の割引後の価格に対して割引を計算します。
この設定が有効なら、お客様はお買い物カゴと購入手続きの画面でクーポンコードを入力できます。入力欄の表示だけを切り替える設定はありません。
クーポンを作成する
- 「マーケティング」→「クーポン」を開き、「クーポンを追加」を押します。
- 一番上の欄にクーポンコードを入力します(例:
summer20)。「クーポンコードを生成」を押すとランダムなコードが入ります。 - 必要なら「詳細説明 (オプション)」欄に、管理用のメモ(キャンペーン名など)を書きます。
- 下の「クーポンデータ」で、「一般」「利用制限」「使用数制限」の3つのタブを設定します(後述)。
- 「公開」を押すと、クーポンが使えるようになります。
クーポンコードは大文字と小文字を区別しません。WooCommerce は入力されたコードを小文字にそろえて扱うため、SUMMER20 と入力しても summer20 のクーポンが使われます。
「一般」タブ: 割引の種類と金額
| 項目 | 内容 |
|---|---|
| 割引の種類 | 「割引率」「お買い物カゴごとに割引」「商品毎に割引」から選ぶ |
| クーポン額 | 割引率なら%の数値(20 なら 20%)、ほかの2つは金額 |
| 送料無料 | チェックを入れると送料無料にする(下の前提設定が必要) |
| クーポンの有効期限 | 指定した日の 00:00:00 に失効する |
割引の種類の違いは次のとおりです。
- 割引率: 対象商品の金額に対して指定した割合を割り引きます。
- お買い物カゴごとに割引: カゴ全体から指定した金額を1回だけ割り引きます。
- 商品毎に割引: 対象商品1個ごとに指定した金額を割り引きます。2個買えば2個分割り引かれます。
「利用制限」タブ: 使える条件
| 項目 | 内容 |
|---|---|
| 最小額/利用上限額 | 小計がこの範囲にあるときだけ使える |
| 併用不可 | 他のクーポンと一緒に使えなくする |
| セール品を除外する | セール中の商品には適用しない |
| 商品/商品を除外 | 適用する商品、適用しない商品を指定する |
| 商品カテゴリー/カテゴリーを除外 | 適用するカテゴリー、適用しないカテゴリーを指定する |
| 許可されるメール | 指定した請求先メールアドレスの注文だけで使える(カンマ区切り、*@example.com のように * も使える) |
「お買い物カゴごとに割引」で商品やカテゴリーを指定した場合は、その商品がカゴに入っていることがクーポンを使う条件になります。
「使用数制限」タブ: 使える回数
| 項目 | 内容 |
|---|---|
| クーポン毎の利用制限数 | このクーポン全体で使える回数 |
| X商品に利用を制限 | 商品単位の割引で、割引の対象にする商品の数の上限 |
| ユーザー毎の利用数制限 | 1人が使える回数(ログイン中はユーザーID、ゲストは請求先メールアドレスで数える) |
送料無料クーポンを使うための設定
クーポンの「送料無料」にチェックを入れるだけでは、送料は無料になりません。配送方法の側にも設定が必要です。
- 「WooCommerce」→「設定」→「配送」を開き、対象の配送地域を編集します。
- 「配送方法を追加」で「送料無料」を追加します。
- 送料無料の設定で「送料無料の必要条件」を「有効な送料無料クーポン」にして保存します。
これで、「送料無料」にチェックを入れたクーポンを使った注文で、送料無料の配送方法が選べるようになります。
WP-CLIでクーポンを確認・作成する
クーポンは shop_coupon という投稿タイプとして保存されます。WP-CLI では、WooCommerce の wp wc shop_coupon コマンドで操作できます(--user に管理者のユーザー名かIDを指定します)。
# クーポンの一覧(使用回数・有効期限つき)
wp wc shop_coupon list --user=admin --fields=id,code,amount,discount_type,usage_count,date_expires
# クーポンを作成(お買い物カゴごとに500円引き、小計3000円以上)
wp wc shop_coupon create --user=admin --code=member10 --discount_type=fixed_cart --amount=500 --minimum_amount=3000
# 最小額を変更
wp wc shop_coupon update 12 --user=admin --minimum_amount=5000
--discount_type の値は、割引率が percent、お買い物カゴごとに割引が fixed_cart、商品毎に割引が fixed_product です。
設定値はカスタムフィールドとして保存されているので、wp post meta list でも確認できます。
wp post meta list 12 --format=table
主なキーは discount_type、coupon_amount、date_expires(UNIX時刻)、usage_count、usage_limit、usage_limit_per_user、minimum_amount、individual_use、free_shipping です。
PHPでクーポンを作成する
コードで作るときは、update_post_meta() で値を1つずつ書くのではなく、WC_Coupon クラスを使います。次のファイルを create-coupon.php として保存し、wp eval-file create-coupon.php で1回だけ実行します。functions.php に書くと、ページを開くたびに実行されてしまうので注意してください。
<?php
/**
* クーポンを1枚作る(wp eval-file で1回だけ実行する)
*/
if ( ! class_exists( 'WC_Coupon' ) ) {
exit( "WooCommerce が有効ではありません\n" );
}
$code = 'summer20';
// 同じコードのクーポンがあれば作らない
if ( wc_get_coupon_id_by_code( $code ) ) {
exit( "既にあります: {$code}\n" );
}
$coupon = new WC_Coupon();
$coupon->set_code( $code );
$coupon->set_discount_type( 'percent' ); // percent / fixed_cart / fixed_product
$coupon->set_amount( 20 ); // 20%
$coupon->set_minimum_amount( 3000 ); // 小計3,000円以上
$coupon->set_individual_use( true ); // 併用不可
$coupon->set_usage_limit( 100 ); // 全体で100回まで
$coupon->set_usage_limit_per_user( 1 ); // 1人1回まで
$coupon->set_date_expires( strtotime( '+30 days' ) );
$coupon->set_description( '夏のキャンペーン' );
$id = $coupon->save();
echo "作成しました: ID {$id}\n";
クーポンを自動で適用する
ログイン中の会員のカートに自動で適用する
次のコードは、ログイン中のお客様がお買い物カゴか購入手続きのページを開いたときに、クーポン member10 を自動で適用します。最小額などの条件を満たさないときは、エラーのお知らせを出さずに何もしません。wp-content/mu-plugins/ にPHPファイルとして置くか、自作プラグインに入れて使います。
<?php
/**
* Plugin Name: 会員のカートにクーポンを自動で適用する
*/
add_action( 'template_redirect', function () {
if ( ! function_exists( 'WC' ) || ! WC()->cart ) {
return;
}
if ( ! is_user_logged_in() || ! ( is_cart() || is_checkout() ) ) {
return;
}
$code = 'member10';
$cart = WC()->cart;
if ( $cart->is_empty() || $cart->has_discount( $code ) ) {
return;
}
// 条件を満たさないときは何もしない(エラーのお知らせを出さない)
$coupon = new WC_Coupon( $code );
$valid = ( new WC_Discounts( $cart ) )->is_coupon_valid( $coupon );
if ( is_wp_error( $valid ) ) {
return;
}
$cart->apply_coupon( $code );
} );
template_redirect はページを表示する前に動くので、ブロック版・ショートコード版どちらのお買い物カゴページでも使えます。woocommerce_before_cart アクションはショートコード版のお買い物カゴでしか実行されないため、ブロック版(現在の WooCommerce の標準)では動きません。
このコードでは、お客様がクーポンを外しても、次にお買い物カゴを開いたときに再び適用されます。外せるようにしたい場合は、外したことをセッションなどに記録する処理を足してください。
URLのパラメーターでクーポンを適用する
https://example.com/cart/?coupon=summer20 のようなURLを開いたときにクーポンを適用するコードです。メールマガジンや広告のリンクに使えます。
<?php
/**
* Plugin Name: URLのパラメーターでクーポンを適用する
*/
add_action( 'template_redirect', function () {
if ( empty( $_GET['coupon'] ) || ! function_exists( 'WC' ) || ! WC()->cart ) {
return;
}
$code = wc_format_coupon_code( sanitize_text_field( wp_unslash( $_GET['coupon'] ) ) );
if ( '' === $code || WC()->cart->has_discount( $code ) ) {
return;
}
// 条件(最小額など)を満たさない場合はエラーのお知らせが表示される
WC()->cart->apply_coupon( $code );
} );
試したところ、お買い物カゴが空の状態でこのURLを開いてもクーポンは残りませんでした。商品を入れたあとに開くURL(お買い物カゴや購入手続きのページ)に付けて使ってください。
クーポンの利用状況を確認する
- クーポン一覧(「マーケティング」→「クーポン」)の「使用/制限」列で、使われた回数と上限を確認できます。
- 「アナリティクス」→「クーポン」で、期間ごとの利用回数と割引額を確認できます。
- WP-CLI では、前述の
wp wc shop_coupon listのusage_countで使用回数を確認できます。