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
- Trong WordPress admin, đi tới Custom Fields > Field Groups.
- Thêm 1 Field Group mới.
- Thêm một trường mới với kiểu Text và đặt Field Name là
product_sku
. - Ở 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:
save_custom_sku_to_acf
: Hàm này đồng bộ giá trị SKU từ WooCommerce vào trườngproduct_sku
trong nhóm “thông tin thêm” khi bạn lưu sản phẩm.acf_to_woocommerce_sku
: Hàm này đồng bộ giá trị SKU từ custom fieldproduct_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ã.