2026年5月20日
2026年5月20日
WooCommerceのクーポン機能を設定する方法
はじめに
WooCommerceのクーポン機能は定率割引・定額割引・送料無料の3種類に対応しています。使用回数制限・最低購入金額・特定商品への適用など細かい条件設定ができます。
症状・原因
- WooCommerceでクーポンコードを作成したい
- 特定商品・カテゴリーにのみ適用されるクーポンを設定したい
- クーポンの使用回数や有効期限を制限したい
- コードでクーポンを自動適用したい
解決手順
ステップ1:クーポン機能を有効化する
WooCommerce → 設定 → 一般:
→「クーポンを有効化する」: ON
→「チェックアウトでクーポンコードの入力欄を表示」: ON
→「変更を保存」
ステップ2:クーポンを作成する
マーケティング → クーポン → 新規追加:
→ クーポンコード: SUMMER20(大文字・小文字問わず)
→「クーポンデータ」パネル:
一般:
→ 割引タイプ:
- 定率割引: 購入額の20%オフ
- 定額割引: 500円オフ
- 定率商品割引(旧形式)
→ クーポン金額: 20(%)または 500(円)
→ 送料無料を許可: OFF/ON
→ 有効期限: 2024/12/31
使用制限:
→ 最低購入金額: 3000
→ 最高購入金額: 50000
→「個別使用のみ」: ON(他クーポンと併用不可)
→ 除外商品・除外カテゴリー: (任意)
使用上限:
→ クーポンの使用上限: 100(全体)
→ ユーザーごとの使用上限: 1
ステップ3:WP-CLIでクーポンを管理する
# クーポン一覧を表示
wp post list --post_type=shop_coupon --fields=ID,post_title,post_status --format=table
# クーポンの詳細設定を確認
wp post meta list {COUPON_ID} --format=table
# 主要なメタキーで確認
wp post meta get {ID} discount_type # percent / fixed_cart
wp post meta get {ID} coupon_amount # 割引金額・率
wp post meta get {ID} date_expires # 有効期限タイムスタンプ
wp post meta get {ID} usage_count # 使用済み回数
wp post meta get {ID} usage_limit # 最大使用回数
wp post meta get {ID} minimum_amount # 最低購入金額
# クーポン使用履歴を確認
wp post meta get {ID} _used_by --format=json
ステップ4:コードでクーポンを作成する
// functions.php — プログラムからクーポンを作成
function myplugin_create_coupon(string $code, int $amount, string $type = 'percent'): int {
$coupon_id = wp_insert_post([
'post_title' => strtoupper($code),
'post_type' => 'shop_coupon',
'post_status' => 'publish',
]);
if (is_wp_error($coupon_id)) {
return 0;
}
update_post_meta($coupon_id, 'discount_type', $type);
update_post_meta($coupon_id, 'coupon_amount', $amount);
update_post_meta($coupon_id, 'usage_limit', 100);
update_post_meta($coupon_id, 'usage_limit_per_user', 1);
update_post_meta($coupon_id, 'minimum_amount', 3000);
update_post_meta($coupon_id, 'date_expires', strtotime('+30 days'));
update_post_meta($coupon_id, 'individual_use', 'yes');
return $coupon_id;
}
// 使用例
myplugin_create_coupon('SUMMER20', 20, 'percent');
ステップ5:クーポンを自動適用する
// functions.php — 特定条件でクーポンを自動適用
add_action('woocommerce_before_cart', function(): void {
if (is_user_logged_in() && !WC()->cart->has_discount('MEMBER10')) {
$user = wp_get_current_user();
// 会員登録から30日以内のユーザーに自動適用
$registered = strtotime($user->user_registered);
if (time() - $registered < 30 * DAY_IN_SECONDS) {
WC()->cart->apply_coupon('MEMBER10');
}
}
});
// URLパラメーターでクーポンを自動適用
// https://example.com/?coupon=SUMMER20
add_action('wp_loaded', function(): void {
$coupon = sanitize_text_field($_GET['coupon'] ?? '');
if ($coupon && function_exists('WC') && WC()->cart) {
WC()->cart->apply_coupon($coupon);
}
});
ステップ6:クーポンの統計を確認する
# 期間内に使用されたクーポンの集計
wp db query "
SELECT p.post_title AS coupon_code,
pm.meta_value AS usage_count
FROM wp_posts p
JOIN wp_postmeta pm ON p.ID = pm.post_id
WHERE p.post_type = 'shop_coupon'
AND pm.meta_key = 'usage_count'
AND CAST(pm.meta_value AS UNSIGNED) > 0
ORDER BY CAST(pm.meta_value AS UNSIGNED) DESC
LIMIT 10"
注意事項
- クーポンコードは大文字・小文字を区別しません(内部では大文字に正規化されます)
- 「個別使用のみ」を設定すると他のクーポンとの併用ができなくなります
- 自動適用クーポンは意図しない重複適用を防ぐため
has_discount()で確認してください
まとめ
WooCommerceのクーポンは管理画面から定率・定額・送料無料を設定し、使用回数・有効期限・最低購入金額で細かく制御できます。WC()->cart->apply_coupon() でコードからの自動適用も可能です。