2026年5月20日

2026年5月20日

WooCommerceのクーポン設定方法(割引の種類・利用制限・送料無料・コードでの作成と自動適用)

WooCommerce のクーポンは、管理画面の「マーケティング」→「クーポン」から作成します。割引の種類は3つあり、最小額・有効期限・利用回数・対象商品などの条件を組み合わせられます。

この記事の画面名とコードは、2026年11月時点の WooCommerce 11.2(日本語表示)と WordPress 7.1 で確認しています。

クーポン機能が有効か確認する

クーポンを使うには、「WooCommerce」→「設定」→「一般」の「クーポンを有効化」で、「クーポンコードの使用を有効化」にチェックが入っている必要があります。新しく入れた WooCommerce では最初からチェックが入っています。

同じ場所にある「逐次クーポン割引を計算します」にチェックを入れると、クーポンを複数使ったときに、1枚目は元の価格、2枚目は1枚目の割引後の価格に対して割引を計算します。

この設定が有効なら、お客様はお買い物カゴと購入手続きの画面でクーポンコードを入力できます。入力欄の表示だけを切り替える設定はありません。

クーポンを作成する

  1. 「マーケティング」→「クーポン」を開き、「クーポンを追加」を押します。
  2. 一番上の欄にクーポンコードを入力します(例: summer20)。「クーポンコードを生成」を押すとランダムなコードが入ります。
  3. 必要なら「詳細説明 (オプション)」欄に、管理用のメモ(キャンペーン名など)を書きます。
  4. 下の「クーポンデータ」で、「一般」「利用制限」「使用数制限」の3つのタブを設定します(後述)。
  5. 「公開」を押すと、クーポンが使えるようになります。

クーポンコードは大文字と小文字を区別しません。WooCommerce は入力されたコードを小文字にそろえて扱うため、SUMMER20 と入力しても summer20 のクーポンが使われます。

「一般」タブ: 割引の種類と金額

項目 内容
割引の種類 「割引率」「お買い物カゴごとに割引」「商品毎に割引」から選ぶ
クーポン額 割引率なら%の数値(20 なら 20%)、ほかの2つは金額
送料無料 チェックを入れると送料無料にする(下の前提設定が必要)
クーポンの有効期限 指定した日の 00:00:00 に失効する

割引の種類の違いは次のとおりです。

  • 割引率: 対象商品の金額に対して指定した割合を割り引きます。
  • お買い物カゴごとに割引: カゴ全体から指定した金額を1回だけ割り引きます。
  • 商品毎に割引: 対象商品1個ごとに指定した金額を割り引きます。2個買えば2個分割り引かれます。

「利用制限」タブ: 使える条件

項目 内容
最小額/利用上限額 小計がこの範囲にあるときだけ使える
併用不可 他のクーポンと一緒に使えなくする
セール品を除外する セール中の商品には適用しない
商品/商品を除外 適用する商品、適用しない商品を指定する
商品カテゴリー/カテゴリーを除外 適用するカテゴリー、適用しないカテゴリーを指定する
許可されるメール 指定した請求先メールアドレスの注文だけで使える(カンマ区切り、*@example.com のように * も使える)

「お買い物カゴごとに割引」で商品やカテゴリーを指定した場合は、その商品がカゴに入っていることがクーポンを使う条件になります。

「使用数制限」タブ: 使える回数

項目 内容
クーポン毎の利用制限数 このクーポン全体で使える回数
X商品に利用を制限 商品単位の割引で、割引の対象にする商品の数の上限
ユーザー毎の利用数制限 1人が使える回数(ログイン中はユーザーID、ゲストは請求先メールアドレスで数える)

送料無料クーポンを使うための設定

クーポンの「送料無料」にチェックを入れるだけでは、送料は無料になりません。配送方法の側にも設定が必要です。

  1. 「WooCommerce」→「設定」→「配送」を開き、対象の配送地域を編集します。
  2. 「配送方法を追加」で「送料無料」を追加します。
  3. 送料無料の設定で「送料無料の必要条件」を「有効な送料無料クーポン」にして保存します。

これで、「送料無料」にチェックを入れたクーポンを使った注文で、送料無料の配送方法が選べるようになります。

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 で使用回数を確認できます。

関連記事

お気軽にご相談ください

お見積りへ お問い合わせへ
▲