Cara Membuat Link Langsung ke Checkout di WooCommerce (Auto Add to Cart)

1. Dapatkan ID produk

masuk ke Products → All Products, arahkan kursor ke nama produk → catat angka ID (contoh: 117).

2. Susun format link

https://domainmu.com/checkout/?add-to-cart=ID_PRODUK

Ganti https://domainmu.com/ dengan nama domain kamu, dan ID_PRODUK dengan ID produknya

Contoh: https://haydigital.go.id/checkout/?add-to-cart=117

3. Tentukan jumlah/quantity (Opsional)

Tambahkan &quantity=2https://haydigital.id/checkout/?add-to-cart=6512&quantity=2

4. Tambahkan UTM tracking setelah parameter (Opsional)

Jadinya: https://haydigital.id/checkout/?add-to-cart=6512&utm_source=ig&utm_medium=bio&utm_campaign=promo

5. Tempel link tersebut ke tombol di halaman

Bisa di Gutenberg: Button → Paste URL atau Elementor: Button → Link

6. Uji di mode incognito

klik link → pastikan halaman Checkout terbuka dengan produk sudah masuk ke keranjang.

Catatan:

  • Jika produk sudah ada di keranjang, klik ulang link akan menambah kuantitas.
  • Pastikan produk purchasable (tersedia stok, tidak di-draft) agar penambahan berhasil.
  • Untuk produk variabel, gunakan ID variasi (bukan ID produk induk) dan sertakan atributnya, misal:

    https://domainmu.com/checkout/?add-to-cart=ID_VARIASI&attribute_pa_size=m&attribute_pa_color=blue

    (gunakan slug atribut yang benar, contoh attribute_pa_size sesuai atribut di produk).


Menambahkan kupon otomatis

Jika ingin menambahkan kupon otomatis di link WooCommerce (misalnya saat add to cart atau checkout), kamu bisa pakai parameter kupon di URL.

Berikut penjelasan dan langkah-langkahnya 👇

1. Format dasarnya

Gunakan struktur seperti ini:

https://domainmu.com/checkout/?add-to-cart=ID_PRODUK&coupon_code=KODEKUPON

Contoh nyata:

https://haydigital.go.id/checkout/?add-to-cart=117&coupon_code=DISKONTHR

Saat link ini diklik:

  • Produk dengan ID 117 otomatis masuk ke keranjang
  • Kupon DISKONTHR otomatis diterapkan di checkout

2. Jika tidak langsung ke checkout (hanya ke cart):

https://haydigital.go.id/cart/?add-to-cart=6512&coupon_code=DISKONTHR

Lebih disarankan langsung ke checkout biar prosesnya cepat.

3. Jika kupon tidak otomatis aktif

Beberapa tema atau plugin cache bisa mencegah penerapan otomatis kupon via URL.

Untuk mengatasinya, tambahkan snippet berikut agar WooCommerce mengenali parameter kupon dari URL 👇

// Auto-apply coupon from ?coupon_code=... (hardened)
add_action( 'wp', function () {
    // Jalankan hanya di halaman Cart/Checkout
    if ( ! ( is_cart() || is_checkout() ) ) {
        return;
    }

    // Abaikan jika bukan GET (hindari bentrok POST di checkout) atau saat AJAX/REST
    if ( $_SERVER['REQUEST_METHOD'] !== 'GET' || wp_doing_ajax() || ( defined('REST_REQUEST') && REST_REQUEST ) ) {
        return;
    }

    // Pastikan ada parameter coupon_code
    if ( empty( $_GET['coupon_code'] ) ) {
        return;
    }

    // Pastikan cart siap & tidak kosong
    if ( ! WC()->cart || WC()->cart->is_empty() ) {
        return;
    }

    // Normalisasi kode kupon
    $code = wc_format_coupon_code( wp_unslash( $_GET['coupon_code'] ) );

    // Opsional: validasi eksistensi kupon untuk menghindari redirect sia-sia
    if ( ! wc_get_coupon_id_by_code( $code ) ) {
        return;
    }

    // Hindari apply berulang
    if ( ! WC()->cart->has_discount( $code ) ) {
        WC()->cart->apply_coupon( $code );
        // Catatan: jika kupon tidak eligible (min spend, produk tidak cocok, expired),
        // WooCommerce akan menaruh notice di session -> tetap tampil setelah redirect.
    }

    // Bersihkan hanya parameter coupon_code, biarkan parameter lain (mis. add-to-cart) tetap ada
    $clean_url = remove_query_arg( array( 'coupon_code' ) );

    // Hindari masalah header sent
    if ( ! headers_sent() ) {
        wp_safe_redirect( $clean_url );
        exit;
    }
}, 99 );

Tetap perhatikan hal berikut (di luar kode):

  • Exclude cache untuk /cart/ dan /checkout/ (plugin cache + CDN/Cloudflare).
  • Pastikan redirect/SSL/WWW tidak membuang query string.
  • Checkout Blocks (WooCommerce Blocks) aman dengan hook ini, tapi jika pakai checkout kustom berbasis SPA/AJAX penuh, tes sekali—atau batasi ke classic checkout.
  • Aturan kupon (min/max spend, include/exclude products, usage limit, dsb.) tetap berlaku—snippet tidak “memaksa” kupon jadi valid.
  • Jika kamu tidak ingin kode kupon terekspos publik, pakai URL pendek + redirect server-side (seperti /promo-nomad50 → redirect 302 ke URL lengkap).