Code di chuyển phần mã sản phẩm trong nhập liệu sản phẩm ra bên ngoài

Trong nhập liệu sản phẩm của Woocommerce, thì phần mã sản phẩm(Mã SKU) sẽ nằm trong phần Kiểm kê Kho hàng – Mã sản phẩm. Điều này rất bất tiện nếu như khách hàng không rành sẽ rất khó để tìm. Do đó trong bài này mình sẽ hướng dẫn các bạn cách để tạo 1 trường Mã sản phẩm ở bên ngoài, và liên kết nó với phần Mã sản phẩm bên trong kiểm kê kho hàng.

Tạo trường SKU trong ACF

  1. Trong WordPress admin, đi tới Custom Fields > Field Groups.
  2. Thêm 1 Field Group mới.
  3. Thêm một trường mới với kiểu Text và đặt Field Nameproduct_sku.
  4. Ở phần location Rules bên dưới , chọn loại Post type equal Sản phẩm. Như vậy khi vào nhập liệu sản phẩm, sẽ có 1 trường Product SKU nằm ngay phía dưới phần nhập nội dung.

Sau đó, các bạn thêm đoạn code sau vào file functions.php

add_action('woocommerce_process_product_meta', 'save_custom_sku_to_acf', 10, 2);
function save_custom_sku_to_acf($post_id, $post) {
    // Lấy giá trị SKU hiện tại từ WooCommerce
    $sku = get_post_meta($post_id, '_sku', true);
    
    // Cập nhật giá trị SKU vào custom field trong nhóm "thông tin thêm"
    if ($sku) {
        update_field('product_sku', $sku, $post_id);
    }
}

add_action('acf/save_post', 'acf_to_woocommerce_sku', 20);
function acf_to_woocommerce_sku($post_id) {
    // Kiểm tra nếu đây là sản phẩm WooCommerce
    if (get_post_type($post_id) == 'product') {
        // Lấy giá trị SKU từ custom field
        $sku = get_field('product_sku', $post_id);

        // Cập nhật SKU trong WooCommerce
        if ($sku) {
            update_post_meta($post_id, '_sku', $sku);
        }
    }
}

Giải thích:

  1. save_custom_sku_to_acf: Hàm này đồng bộ giá trị SKU từ WooCommerce vào trường product_sku trong nhóm “thông tin thêm” khi bạn lưu sản phẩm.
  2. acf_to_woocommerce_sku: Hàm này đồng bộ giá trị SKU từ custom field product_sku trong nhóm “thông tin thêm” vào trường SKU của WooCommerce khi bạn lưu thay đổi từ ACF.

Kết quả:

Mã sản phẩm (SKU) sẽ được đồng bộ và hiển thị trong nhóm “thông tin thêm” của custom field. Bất cứ khi nào bạn cập nhật SKU trong WooCommerce hoặc trong nhóm “thông tin thêm”, giá trị sẽ được đồng bộ giữa hai nơi.

Việc này thường dùng khi bạn dùng Woocommerce làm phần bất động sản. Muốn ẩn đi phần dữ liệu sản phẩm để không bị rối, nhưng đồng thời muốn nhập mã SKU để phục vụ cho việc tìm kiếm sản phẩm bằng mã.

Bài viết liên quan