Với hầu hết các website bán hàng thì việc tạo mã giảm giá cho khách hàng và tung ra các chương trình khuyến mãi gần như là bắt buộc bên nào cũng sử dụng.
Thực tế cho thấy việc tạo và quản lý mã giảm giá mỗi nền tảng lại hoàn toàn khác nhau, và trong bài viết này danhgiahost.io.vn sẽ giúp các bạn tìm hiểu kĩ hơn về “Cách tạo và quản lý mã giảm giá trong WordPress” nhé.
1. Tạo và quản lý mã giảm giá thường dùng phương pháp nào?

Hầu hết trên thị trường hiện tại thì chúng ta có thể tạo và quản lý mã giảm giá qua những cách như sau:
- Mã giảm giá tĩnh (Static Coupon Codes): Sẽ set một hoặc vài mã cố định (VD: SALE10, FREESHIP) nhiều người dùng cùng sử dụng. Quản lý lưu mã trong CSDL Thiết lập: % giảm, số tiền giảm, ngày hết hạn, số lượt dùng. Tuy nhiên dễ bị lộ và lạm dụng Khó kiểm soát theo từng người dùng.
- Mã giảm giá động (Dynamic / Unique Codes): Mỗi người dùng nhận một mã riêng (VD: USER123-ABC) Mã chỉ dùng 1 lần hoặc cho 1 user. Giúp chống gian lận tốt. Tuy nhiên sẽ phức tạp hơn và cần hệ thống backend tốt.
- Quản lý bằng Rule / Condition (Rule-based Discounts): Không cần nhập mã Giảm giá tự động khi thỏa điều kiện Ví dụ rule Đơn > 500k giảm 50k, ưu điểm là trải nghiệm tốt (không cần nhớ mã) – Giảm lỗi nhập mã nhưng nhược điểm là khó triển khai và dễ xung đột rule
- Quản lý theo Campaign (Chiến dịch): Gom nhiều mã vào 1 chiến dịch, mỗi campaign có thời gian, ngân sách, mục tiêu. Giúp dễ phân tích & báo cáo + quản trị tốt ngân sách.
2. Cách tạo và quản lý mã giảm giá trong WordPress?
Ở WordPress nếu bạn không rành thì cách nhanh nhất là dùng Plugin cho dễ vì đa số các site sử dụng mã giảm giá đều là site bán hàng và site bán hàng thì thường dùng woocommere. Ngoài ra trong bài này mình cũng sẽ hướng dẫn mọi người dùng code thủ công luôn nhé.
* Cách 1: Dùng plugin?
Cách dễ nhất là dùng mã giảm giá của woo. Để kích hoạt mã giảm giá WooCommerce, hãy truy cập WooCommerce > Cài đặt > Chung . Sau đó, bạn có thể chọn Cho phép sử dụng mã giảm giá và nhấp vào Lưu thay đổi:

Để tạo phiếu giảm giá đầu tiên, hãy truy cập Marketing > Phiếu giảm giá . Sau đó chọn Thêm phiếu giảm giá:

Bạn có thể yêu cầu WooCommerce tự động tạo mã bằng cách chọn “Tạo mã giảm giá” . WooCommerce sau đó sẽ tạo một mã dài, phức tạp bao gồm các ký tự ngẫu nhiên. Điều này có thể khiến khách hàng khó đoán được mã giảm giá của bạn hơn:

Và đặt giới hạn thời gian bằng cách sử dụng trường Ngày hết hạn mã giảm giá:

Ngoài ra Woocomere còn rất nhiều chức năng khác như :
- Tạo phiếu giảm giá theo phần trăm
- Chiết khấu cố định cho giỏ hàng
- Chỉ áp dụng giảm giá cho một số sản phẩm nhất định.
- Chương trình giảm giá kèm theo hạn chế sử dụng
Nếu bạn không thích dùng woo, chúng ta có thể dùng plugin khác đơn cử như Easy Digital Downloads (EDD) – tuy nhiên nó sẽ mất phí không Free như Woo
Trước tiên, hãy vào mục Tải xuống » Giảm giá , sau đó nhấp vào Thêm mới .

- Đặt tên cho chương trình giảm giá của bạn
- Tạo một mã chữ số chính thức mà khách hàng tiềm năng phải cung cấp.
- Chọn số tiền , có thể là mức giảm giá cố định hoặc tỷ lệ phần trăm.

Và đây là kết quả:


Cách 2: Dùng Code thủ công?
Chúng ta sẽ thêm toàn bộ đoạn code này dán vào cuối File Functions.php?
<?php
/**
* BỘ QUẢN LÝ MÃ GIẢM GIÁ CHUẨN CHỈ – ALL IN ONE
* Dán vào functions.php của Theme
*/if (class_exists(‘WooCommerce’)) {
class WooCouponUltimateManager {
public function __construct() {
// Khởi tạo Menu Admin
add_action(‘admin_menu’, [$this, ‘init_menu’]);
// Xử lý logic tạo/xóa
add_action(‘admin_init’, [$this, ‘handle_actions’]);
// Tự động dọn dẹp mã hết hạn mỗi ngày
if (!wp_next_scheduled(‘daily_coupon_cleanup’)) {
wp_schedule_event(time(), ‘daily’, ‘daily_coupon_cleanup’);
}
add_action(‘daily_coupon_cleanup’, [$this, ‘cleanup_expired_coupons’]);
}public function init_menu() {
add_submenu_page(
‘woocommerce’,
‘Quản lý Coupon Code’,
‘Mã giảm giá (Code)’,
‘manage_options’,
‘woo-coupon-pro’,
[$this, ‘render_ui’]
);
}/**
* HÀM TẠO COUPON CHUẨN
*/
public function create_coupon($data) {
$coupon_code = sanitize_text_field($data[‘code’]);
if (wc_get_coupon_id_by_code($coupon_code)) return new WP_Error(‘exists’, ‘Mã này đã tồn tại!’);$coupon = new WC_Coupon();
$coupon->set_code($coupon_code);
$coupon->set_amount($data[‘amount’]);
$coupon->set_discount_type($data[‘type’]); // ‘percent’, ‘fixed_cart’, ‘fixed_product’
$coupon->set_date_expires(strtotime($data[‘expiry’]));
$coupon->set_usage_limit($data[‘usage_limit’]);
$coupon->set_minimum_amount($data[‘min_spend’]);
$coupon->set_individual_use(true);return $coupon->save();
}/**
* XỬ LÝ ACTIONS (POST/GET)
*/
public function handle_actions() {
if (!isset($_GET[‘page’]) || $_GET[‘page’] !== ‘woo-coupon-pro’) return;// Xử lý Xóa
if (isset($_GET[‘del_id’]) && current_user_can(‘manage_options’)) {
wp_delete_post(intval($_GET[‘del_id’]), true);
add_action(‘admin_notices’, function() {
echo ‘<div class=”updated”><p>Đã xóa mã giảm giá thành công!</p></div>’;
});
}// Xử lý Tạo mới
if (isset($_POST[‘btn_create_coupon’]) && check_admin_referer(‘woo_cp_action’, ‘woo_cp_nonce’)) {
$res = $this->create_coupon([
‘code’ => $_POST[‘cp_code’],
‘amount’ => $_POST[‘cp_amount’],
‘type’ => $_POST[‘cp_type’],
‘expiry’ => $_POST[‘cp_expiry’],
‘usage_limit’ => $_POST[‘cp_limit’],
‘min_spend’ => $_POST[‘cp_min_spend’]
]);if (is_wp_error($res)) {
add_action(‘admin_notices’, function() use ($res) {
echo ‘<div class=”error”><p>Lỗi: ‘ . $res->get_error_message() . ‘</p></div>’;
});
} else {
add_action(‘admin_notices’, function() {
echo ‘<div class=”updated”><p>Đã tạo mã giảm giá mới thành công!</p></div>’;
});
}
}
}/**
* TỰ ĐỘNG XÓA MÃ HẾT HẠN
*/
public function cleanup_expired_coupons() {
$coupons = get_posts([‘post_type’ => ‘shop_coupon’, ‘posts_per_page’ => -1]);
foreach ($coupons as $cp) {
$coupon = new WC_Coupon($cp->ID);
if ($coupon->get_date_expires() && $coupon->get_date_expires()->getTimestamp() < time()) {
wp_delete_post($cp->ID, true);
}
}
}/**
* GIAO DIỆN QUẢN LÝ
*/
public function render_ui() {
?>
<div class=”wrap”>
<h1 class=”wp-heading-inline”>Hệ thống Quản lý Coupon Chuyên nghiệp</h1>
<hr class=”wp-header-end”><div id=”poststuff”>
<div id=”post-body” class=”metabox-holder columns-2″><div id=”post-body-content”>
<div class=”card”>
<h2>Danh sách mã đang hoạt động</h2>
<table class=”wp-list-table widefat fixed striped”>
<thead>
<tr>
<th>Mã</th>
<th>Loại</th>
<th>Giá trị</th>
<th>Đơn tối thiểu</th>
<th>Hết hạn</th>
<th>Lượt dùng</th>
<th>Thao tác</th>
</tr>
</thead>
<tbody>
<?php
$coupons = get_posts([‘post_type’ => ‘shop_coupon’, ‘posts_per_page’ => 20]);
foreach ($coupons as $cp) :
$c = new WC_Coupon($cp->ID);
?>
<tr>
<td><strong><?php echo $c->get_code(); ?></strong></td>
<td><?php echo $c->get_discount_type(); ?></td>
<td><?php echo $c->get_amount(); ?></td>
<td><?php echo number_format($c->get_minimum_amount()); ?>đ</td>
<td><?php echo $c->get_date_expires() ? $c->get_date_expires()->date(‘d/m/Y’) : ‘Vĩnh viễn’; ?></td>
<td><?php echo $c->get_usage_count() . ‘/’ . $c->get_usage_limit(); ?></td>
<td>
<a href=”<?php echo admin_url(‘admin.php?page=woo-coupon-pro&del_id=’ . $cp->ID); ?>”
onclick=”return confirm(‘Xóa mã này?’)” style=”color:red;”>Xóa ngay</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div><div id=”postbox-container-1″ class=”postbox-container”>
<div class=”postbox”>
<h2 class=”hndle”>Tạo mã mới nhanh</h2>
<div class=”inside”>
<form method=”POST”>
<?php wp_nonce_field(‘woo_cp_action’, ‘woo_cp_nonce’); ?>
<p><label>Mã giảm giá:</label><br><input type=”text” name=”cp_code” class=”widefat” placeholder=”VD: TET2024″ required></p>
<p><label>Giá trị giảm:</label><br><input type=”number” name=”cp_amount” class=”widefat” required></p>
<p><label>Loại giảm giá:</label><br>
<select name=”cp_type” class=”widefat”>
<option value=”percent”>Phần trăm (%)</option>
<option value=”fixed_cart”>Số tiền cố định (đ)</option>
</select>
</p>
<p><label>Đơn tối thiểu (đ):</label><br><input type=”number” name=”cp_min_spend” value=”0″ class=”widefat”></p>
<p><label>Giới hạn số lần dùng:</label><br><input type=”number” name=”cp_limit” value=”100″ class=”widefat”></p>
<p><label>Ngày hết hạn:</label><br><input type=”date” name=”cp_expiry” class=”widefat” required></p>
<input type=”submit” name=”btn_create_coupon” class=”button button-primary button-large” value=”Kích hoạt mã”>
</form>
</div>
</div>
</div></div>
</div>
</div>
<style>.card { background: #fff; border: 1px solid #ccd0d4; padding: 15px; box-shadow: 0 1px 1px rgba(0,0,0,.04); }</style>
<?php
}
}new WooCouponUltimateManager();
}
Sau khi dán đoạn đó xong chúng ta sẽ vào: Menu WooCommerce >> Thấy mục Mã giảm giá (Code) – và chúng ta sẽ tuỳ chọn xử lý trong đó