Trong kinh doanh online, việc cập nhật giá sản phẩm theo danh mục trên WooCommerce là một nhiệm vụ quan trọng, đặc biệt khi bạn muốn điều chỉnh giá hàng loạt để phù hợp với chiến lược kinh doanh. Trong bài viết này, tôi sẽ chia sẻ một đoạn code PHP giúp bạn tự động cập nhật giá sản phẩm trong một danh mục cụ thể, kèm theo hướng dẫn chi tiết và hình ảnh minh họa. Với hơn 8 năm kinh nghiệm làm việc với WordPress và WooCommerce, tôi sẽ đảm bảo bạn có thể áp dụng mã này dễ dàng và hiệu quả.

Tại Sao Cần Cập Nhật Giá Sản Phẩm Hàng Loạt?

Cập nhật giá hàng loạt giúp tiết kiệm thời gian so với việc chỉnh sửa từng sản phẩm. Một số trường hợp cần sử dụng:

  • Khuyến mãi theo mùa: Ví dụ, giảm giá tất cả sản phẩm trong danh mục “Quần áo mùa đông” trước Black Friday.
  • Điều chỉnh giá thị trường: Cập nhật giá dựa trên biến động cung cầu.
  • Tối ưu SEO: Giá cả hợp lý có thể cải thiện tỷ lệ chuyển đổi, gián tiếp tăng thứ hạng trên Google.

Giới Thiệu Plugin Tùy Chỉnh

Đoạn code dưới đây tạo một trang quản trị trong WordPress, cho phép bạn chọn danh mục sản phẩm, đặt giá tối thiểu và tối đa, sau đó cập nhật giá ngẫu nhiên trong khoảng đó. Code này được tích hợp vào WooCommerce và sử dụng các hàm chuẩn của WordPress để đảm bảo tính tương thích.

Hình ảnh minh họa 1: Giao diện trang cập nhật giá

Hướng Dẫn Sử Dụng Code

Bước 1: Thêm Code Vào Theme Hoặc Plugin

Sao chép đoạn code sau vào file functions.php của child theme.

 

add_action('admin_menu', 'nguyenlan_add_price_update_menu');
function nguyenlan_add_price_update_menu() {
add_options_page('Cập nhật giá sản phẩm', 'Cập nhật giá sản phẩm', 'manage_woocommerce', 'nguyenlan_price_update', 'nguyenlan_render_price_update_page');
}

function nguyenlan_render_price_update_page() {
$nguyenlan_categories = get_terms([
'taxonomy' => 'product_cat',
'hide_empty' => false,
]);
?>
<div class="wrap">
<h1>Cập nhật giá sản phẩm</h1>
<form method="post">
<table class="form-table">
<tr>
<th><label for="nguyenlan_min_price">Giá thấp nhất ($)</label></th>
<td><input type="number" step="0.01" name="nguyenlan_min_price" id="nguyenlan_min_price" required value="4.00" /></td>
</tr>
<tr>
<th><label for="nguyenlan_max_price">Giá cao nhất ($)</label></th>
<td><input type="number" step="0.01" name="nguyenlan_max_price" id="nguyenlan_max_price" required value="6.00" /></td>
</tr>
<tr>
<th><label for="nguyenlan_category">Chọn danh mục</label></th>
<td>
<select name="nguyenlan_category" id="nguyenlan_category">
<option value="">-- Tất cả sản phẩm --</option>
<?php foreach ($nguyenlan_categories as $nguyenlan_cat) : ?>
<option value="<?php echo esc_attr($nguyenlan_cat->term_id); ?>">
<?php echo esc_html($nguyenlan_cat->name); ?>
</option>
<?php endforeach; ?>
</select>
</td>
</tr>
</table>
<?php submit_button('Cập nhật giá sản phẩm'); ?>
</form>
</div>
<?php

if ($_SERVER['REQUEST_METHOD'] === 'POST' && current_user_can('manage_woocommerce')) {
$nguyenlan_min = floatval($_POST['nguyenlan_min_price']);
$nguyenlan_max = floatval($_POST['nguyenlan_max_price']);
$nguyenlan_cat = isset($_POST['nguyenlan_category']) ? intval($_POST['nguyenlan_category']) : 0;

if ($nguyenlan_min > 0 && $nguyenlan_max > $nguyenlan_min) {
nguyenlan_update_prices($nguyenlan_min, $nguyenlan_max, $nguyenlan_cat);
echo '<div class="notice notice-success is-dismissible"><p>Đã cập nhật giá sản phẩm thành công.</p></div>';
} else {
echo '<div class="notice notice-error"><p>Vui lòng nhập thông tin hợp lệ.</p></div>';
}
}
}

function nguyenlan_update_prices($min_price, $max_price, $cat_id = 0) {
$query_args = [
'post_type' => 'product',
'posts_per_page' => -1,
'post_status' => 'publish',
'fields' => 'ids',
];

if ($cat_id > 0) {
$query_args['tax_query'] = [
[
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => $cat_id,
],
];
}

$products = new WP_Query($query_args);

if ($products->have_posts()) {
foreach ($products->posts as $product_id) {
$use_decimal = mt_rand(1, 100) <= 70;
if ($use_decimal) {
$price = number_format(mt_rand($min_price * 100, $max_price * 100) / 100, 2, '.', '');
} else {
$price = (string)rand(ceil($min_price), floor($max_price));
}

update_post_meta($product_id, '_price', $price);
update_post_meta($product_id, '_regular_price', $price);
update_post_meta($product_id, '_sale_price', '');
}
wp_reset_postdata();
}
}

 

Bước 2: Hiểu Cách Code Hoạt Động
  • nguyenlan_add_price_update_menu: Thêm một trang quản trị vào menu “Cài đặt” của WordPress, chỉ hiển thị cho người dùng có quyền manage_woocommerce.
  • nguyenlan_render_price_update_page: Hiển thị form để nhập giá tối thiểu, tối đa, và chọn danh mục. Form này sử dụng các hàm WordPress như get_terms để lấy danh mục sản phẩm.
  • nguyenlan_update_prices_by_category: Cập nhật giá ngẫu nhiên cho các sản phẩm trong danh mục được chọn, với 70% sản phẩm có giá thập phân (ví dụ: 5.23) và 30% có giá số nguyên (ví dụ: 5.00).

Bước 3: Cách Sử Dụng

  1. Truy cập Cài đặt > Cập nhật giá sản phẩm trong dashboard WordPress.
  2. Nhập giá thấp nhất và cao nhất (ví dụ: 4.00 và 6.00).
  3. Chọn danh mục sản phẩm từ danh sách.
  4. Nhấn nút “Cập nhật giá sản phẩm”.
  5. Kiểm tra sản phẩm trong danh mục để đảm bảo giá đã được cập nhật.

Mẹo Tối Ưu Hóa Code

  • Kiểm tra lỗi: Thêm kiểm tra để đảm bảo danh mục tồn tại trước khi cập nhật.
  • Tùy chỉnh giá: Nếu muốn giá cố định thay vì ngẫu nhiên, thay đổi hàm nguyenlan_update_prices_by_category để sử dụng giá cố định.
  • Sao lưu dữ liệu: Luôn sao lưu database trước khi chạy code cập nhật hàng loạt.

Hình ảnh minh họa 3: Kiểm tra sản phẩm sau cập nhật

 

Ghi chú: Hình ảnh này hiển thị danh sách sản phẩm trong WooCommerce với giá mới được cập nhật. 

Lưu Ý Khi Sử Dụng Code

  • Đảm bảo bạn đang dùng WooCommerce phiên bản mới nhất (2025) để tránh lỗi tương thích.
  • Chỉ người dùng có quyền manage_woocommerce (thường là admin) mới thấy trang cập nhật.
  • Nếu website có nhiều sản phẩm, quá trình cập nhật có thể mất thời gian. Hãy cân nhắc chạy code vào giờ thấp điểm.

Kết Luận

Đoạn code trên là một giải pháp mạnh mẽ để tự động hóa việc cập nhật giá sản phẩm trong WooCommerce theo danh mục. Với giao diện thân thiện và tính năng linh hoạt, bạn có thể dễ dàng áp dụng cho cửa hàng online của mình. Nếu bạn gặp khó khăn khi tích hợp code hoặc muốn tùy chỉnh thêm, hãy để lại bình luận để tôi hỗ trợ!

Hành động ngay: Sao chép code, thêm vào website của bạn, và kiểm tra kết quả trong vòng 5 phút!

Nếu cần Nguyễn Lân trợ giúp vui lòng liên hệ: 0988 569 505

Bài viết liên quan

Thêm Badge & Logo cho sản phẩm giống Amazon

Bạn đang muốn thêm Badge & Logo cho sản phẩm giống Amazon nhưng chưa biết

Cách hiện tab sản phẩm dạng Vertical Flatsome

Bạn đang muốn hiển thị tab sản phẩm dạng vertical trên giao diện flatsome. Hãy

Hướng dẫn chèn khung soạn thảo danh mục sản phẩm Flatsome

Theme Flatsome là một trong những giao diện WordPress phổ biến nhất, đặc biệt dành

Code lấy ảnh đầu tiên của Gallery làm ảnh đại diện sản phẩm

Trong WooCommerce, việc đảm bảo tất cả sản phẩm đều có ảnh đại diện (thumbnail)

Plugin Update product from Children to Parent Category

Plugin này cho phép cập nhật nhanh sản phẩm từ danh mục con vào danh

Leave a Reply

Your email address will not be published. Required fields are marked *

Tất cả dữ liệu trên website chỉ làm demo web tham khảo, không bán hàng hay cung cấp dịch vụ