Mục lục
Tổng hợp các hàm WooCommerce quan trọng nhất cho lập trình viên
Khi thiết kế và phát triển website bán hàng trên nền tảng WordPress, việc tùy biến giao diện và luồng thanh toán là công việc diễn ra thường xuyên. Tuy nhiên, thay vì lạm dụng quá nhiều plugin của bên thứ ba gây chậm website và xung đột dữ liệu, sử dụng trực tiếp các hàm WooCommerce có sẵn là giải pháp tối ưu nhất để kiểm soát hiệu năng và chuẩn hóa mã nguồn.
Nắm vững hệ thống các hàm WooCommerce giúp lập trình viên dễ dàng can thiệp vào dữ liệu sản phẩm, giỏ hàng, xử lý đơn hàng hay thiết lập điều kiện hiển thị theo mong muốn. Dưới đây là danh sách tổng hợp những hàm WooCommerce thông dụng và hữu ích nhất mà mọi developer cần ghi nhớ.
Nhóm hàm WooCommerce xử lý và truy xuất sản phẩm
Sản phẩm là đối tượng trọng tâm của mọi cửa hàng trực tuyến. Các hàm WooCommerce phục vụ việc bóc tách dữ liệu sản phẩm cho phép bạn lấy thông tin chi tiết từ cơ sở dữ liệu một cách an toàn và đúng cấu trúc.
Khởi tạo đối tượng sản phẩm với hàm wc_get_product()
Đây là một trong những hàm WooCommerce cốt lõi được sử dụng nhiều nhất. Thay vì sử dụng hàm get_post() của WordPress, bạn nên dùng wc_get_product( $product_id ) để trả về instance của class WC_Product.
// Khởi tạo đối tượng từ Product ID
$product = wc_get_product( 123 );
if ( $product ) {
$name = $product->get_name(); // Tên sản phẩm
$price = $product->get_price(); // Giá hiện tại
$regular_price= $product->get_regular_price(); // Giá gốc
$sale_price = $product->get_sale_price(); // Giá khuyến mãi
$sku = $product->get_sku(); // Mã SKU
$stock_status = $product->get_stock_status(); // Trạng thái kho: instock, outofstock
}
Lọc danh sách sản phẩm bằng wc_get_products()
Khi cần lấy danh sách sản phẩm tùy biến (ví dụ: sản phẩm bán chạy, sản phẩm mới ra mắt, sản phẩm theo danh mục), hàm WooCommerce wc_get_products() là lựa chọn thay thế hoàn hảo cho WP_Query. Hàm này đã được tối ưu hóa riêng cho bảng dữ liệu và taxonomy của WooCommerce:
$args = array(
‘status’ => ‘publish’,
‘limit’ => 6,
‘orderby’ => ‘date’,
‘order’ => ‘DESC’,
‘category’ => array( ‘thoi-trang-nam’ ),
);
$products = wc_get_products( $args );
Nhóm hàm WooCommerce thao tác với giỏ hàng (Cart)
Khi xây dựng các tính năng như Mini Cart trên Header, Sticky Cart hoặc Popup thêm vào giỏ hàng bằng AJAX, bạn sẽ cần tương tác trực tiếp với class WC_Cart thông qua đối tượng toàn cục WC()->cart.
Lấy dữ liệu sản phẩm trong giỏ qua WC()->cart->get_cart()
Hàm này trả về mảng dữ liệu chi tiết của từng item đang có trong giỏ hàng:
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$_product = $cart_item[‘data’]; // Đối tượng WC_Product
$quantity = $cart_item[‘quantity’];
$subtotal = WC()->cart->get_product_subtotal( $_product, $quantity );
}
Các hàm WooCommerce tiện ích cho giỏ hàng
WC()->cart->get_cart_contents_count(): Lấy tổng số lượng sản phẩm đang có trong giỏ hàng (thường dùng để làm badge số lượng hiển thị trên icon giỏ hàng).
WC()->cart->get_cart_total(): Trả về chuỗi HTML định dạng tổng số tiền thanh toán của giỏ hàng.
WC()->cart->empty_cart(): Làm rỗng toàn bộ giỏ hàng, thường dùng sau khi hoàn tất một luồng mua hàng tùy biến.
WC()->cart->add_to_cart( $product_id, $quantity ): Thêm sản phẩm vào giỏ hàng thông qua logic code PHP.
Nhóm hàm WooCommerce truy vấn và xử lý đơn hàng (Orders)
Xử lý đơn hàng là giai đoạn quan trọng trong luồng thanh toán, trang cảm ơn (Thank You page) hoặc khi đồng bộ đơn hàng sang hệ thống CRM bên ngoài.
Đọc dữ liệu chi tiết đơn hàng với wc_get_order()
Để trích xuất dữ liệu từ một đơn hàng, bạn dùng hàm WooCommerce wc_get_order( $order_id ). Hàm này trả về đối tượng WC_Order chứa đầy đủ phương thức cần thiết:
$order = wc_get_order( $order_id );
if ( $order ) {
$order_total = $order->get_total();
$order_status = $order->get_status();
$customer_name = $order->get_billing_first_name() . ‘ ‘ . $order->get_billing_last_name();
$phone_number = $order->get_billing_phone();
// Vòng lặp lấy từng sản phẩm trong đơn hàng
foreach ( $order->get_items() as $item_id => $item ) {
$product_name = $item->get_name();
$item_qty = $item->get_quantity();
$line_total = $item->get_total();
}
}
Các hàm WooCommerce định dạng tiền tệ và hiển thị giá chuẩn
Một sai lầm phổ biến khi mới bắt đầu tùy biến là nối chuỗi tiền tệ thủ công (ví dụ $price . ‘ đ’). Cách làm này phá vỡ cấu hình tiền tệ trong Dashboard và gây lỗi hiển thị trên website đa tiền tệ. Bạn nên áp dụng đúng các hàm WooCommerce sau:
Tên hàm | Công dụng |
wc_price( $price ) | Format số thô thành chuỗi giá hoàn chỉnh có ký hiệu tiền tệ và thẻ HTML chuẩn. |
get_woocommerce_currency() | Lấy mã tiền tệ hiện hành đang cấu hình (ví dụ: VND, USD). |
get_woocommerce_currency_symbol() | Lấy ký hiệu tiền tệ đại diện (ví dụ: ₫, $). |
wc_format_decimal( $number ) | Chuẩn hóa dấu chấm, phẩy thập phân theo thiết lập của cửa hàng. |
Nhóm hàm điều kiện WooCommerce (Conditional Tags)
Các hàm điều kiện WooCommerce là công cụ đắc lực giúp bạn kiểm tra ngữ cảnh hiển thị. Nhờ đó, bạn có thể nạp file script hoặc thực thi logic code đúng trang, tránh làm chậm các khu vực không liên quan.
is_woocommerce(): Trả về true nếu người dùng đang ở trên bất kỳ trang nào thuộc hệ sinh thái WooCommerce.
is_shop(): Kiểm tra xem trang hiện tại có phải trang Shop chính hay không.
is_product(): Xác định trang chi tiết sản phẩm đơn lẻ (Single Product).
is_product_category(): Xác định trang lưu trữ danh mục sản phẩm (Category Archive).
is_cart(): Kiểm tra trang Giỏ hàng.
is_checkout(): Kiểm tra trang Thanh toán.
is_account_page(): Xác định trang Tài khoản thành viên (My Account).
Ví dụ ứng dụng: Chỉ tải script xác thực tại trang thanh toán:
function custom_load_checkout_assets() {
if ( is_checkout() && ! is_order_received_page() ) {
wp_enqueue_script( ‘custom-checkout-js’, get_stylesheet_directory_uri() . ‘/js/checkout.js’, array( ‘jquery’ ), ‘1.0’, true );
}
}
add_action( ‘wp_enqueue_scripts’, ‘custom_load_checkout_assets’ );
Lưu ý quan trọng khi sử dụng các hàm WooCommerce
Kiểm tra plugin trước khi gọi hàm: Để tránh lỗi Fatal Error: Call to undefined function khi vô hiệu hóa WooCommerce, luôn bọc code trong điều kiện if ( class_exists( ‘WooCommerce’ ) ).
Tuân thủ chuẩn Getter/Setter (CRUD): Không gọi trực tiếp thuộc tính như $product->id hay $order->total. Hãy sử dụng các phương thức getter chuẩn như $product->get_id() để đảm bảo code tương thích với các bản cập nhật mới nhất.
Kết hợp hàm với Action và Filter Hook: Để can thiệp vào website an toàn, hãy đặt các hàm WooCommerce vào đúng vị trí hook trong file functions.php của child theme thay vì chỉnh sửa trực tiếp vào file template gốc.
Kết luận
Sử dụng thành thạo các hàm WooCommerce là nền tảng giúp bạn tùy biến giao diện linh hoạt, tối ưu hiệu năng website và nâng cao chất lượng code. Hãy lưu lại danh sách này làm tài liệu tra cứu nhanh cho các dự án thương mại điện tử tiếp theo của bạn.
Nhận Xét Của Khách Hàng
