Để tìm hiểu sâu về WooCommerce, bạn cần nắm rõ các thành phần và cấu trúc file mà nó tạo ra. WooCommerce không chỉ là một plugin; nó là một framework hoàn chỉnh, tạo ra các loại dữ liệu mới (CPT) và dựa vào các tệp mẫu (template files) để hiển thị giao diện người dùng.
Dưới đây là tổng quan chi tiết về các thành phần dữ liệu và cấu trúc tệp của WooCommerce:
B. Tệp Template Chủ chốt trong thư mục
Đây là các tệp mà bạn sẽ cần can thiệp nếu muốn tùy chỉnh giao diện người dùng (frontend) của cửa hàng:
Cách Tùy chỉnh Đúng:
Dưới đây là tổng quan chi tiết về các thành phần dữ liệu và cấu trúc tệp của WooCommerce:
1. Thành phần Dữ liệu (Database/CPT)
WooCommerce sử dụng Custom Post Types (CPT) và Custom Taxonomies để tổ chức dữ liệu thương mại điện tử:A. Custom Post Types (Loại Bài đăng Tùy chỉnh)
| CPT Slug | Tên hiển thị | Mục đích |
product | Sản phẩm | Lưu trữ tất cả thông tin chi tiết về sản phẩm (Tên, Mô tả, Giá, Ảnh, Thuộc tính). |
shop_order | Đơn hàng | Lưu trữ dữ liệu về các giao dịch đã hoàn tất (Thông tin khách hàng, Tình trạng đơn hàng, Chi tiết sản phẩm, Tổng giá trị). |
shop_coupon | Mã giảm giá | Lưu trữ thông tin về các mã giảm giá và quy tắc áp dụng (Số tiền giảm, Ngày hết hạn, Sản phẩm áp dụng). |
shop_webhook | Webhook | Được sử dụng cho các tích hợp tự động với các dịch vụ bên ngoài. |
B. Custom Taxonomies (Phân loại Tùy chỉnh)
| Taxonomy Slug | Tên hiển thị | Vai trò tương đương |
product_cat | Danh mục sản phẩm | Dùng để phân loại sản phẩm theo nhóm lớn (ví dụ: Áo sơ mi, Điện thoại). |
product_tag | Thẻ sản phẩm | Dùng để gắn thẻ mô tả chi tiết sản phẩm (ví dụ: Cotton, Bản giới hạn). |
product_shipping_class | Lớp vận chuyển | Dùng để gán các quy tắc phí vận chuyển khác nhau cho các nhóm sản phẩm khác nhau. |
C. Post Meta (Custom Fields)
Dữ liệu của các CPT trên (như giá, tồn kho, thuộc tính, tình trạng đơn hàng) được lưu trữ dưới dạng Post Meta (Custom Fields) trong bảngwp_postmeta.- Ví dụ về Meta Key quan trọng:
_price(Giá bán)._stock(Số lượng tồn kho)._sku(Mã SKU).
2. Cấu trúc Thư mục và Tệp Mẫu (Template Files)
WooCommerce là một plugin, vì vậy các tệp cốt lõi của nó nằm trong thư mục:wp-content/plugins/woocommerce/.A. Các Thư mục Plugin Cốt lõi quan trọng
| Thư mục | Chức năng |
assets/ | Chứa các tệp CSS, JavaScript và hình ảnh được sử dụng để định kiểu giao diện. |
includes/ | Chứa các tệp cốt lõi PHP, định nghĩa các lớp (classes), hàm, và xử lý logic nghiệp vụ. |
i18n/ | Chứa các tệp dịch thuật. |
templates/ | CHỦ CHỐT! Chứa tất cả các tệp mẫu HTML/PHP (frontend) để hiển thị sản phẩm, giỏ hàng, thanh toán, v.v. |
B. Tệp Template Chủ chốt trong thư mục templates/
Đây là các tệp mà bạn sẽ cần can thiệp nếu muốn tùy chỉnh giao diện người dùng (frontend) của cửa hàng:| Tệp Mẫu | Mô tả |
archive-product.php | Tệp mẫu cho trang Cửa hàng (Shop Page), hiển thị danh sách tất cả sản phẩm. |
single-product.php | Tệp mẫu cho trang Chi tiết Sản phẩm cá nhân. |
content-single-product.php | Định nghĩa bố cục chính của trang chi tiết sản phẩm. |
cart/cart.php | Hiển thị nội dung trang Giỏ hàng. |
checkout/form-checkout.php | Hiển thị biểu mẫu trên trang Thanh toán. |
myaccount/my-account.php | Hiển thị trang Tài khoản của tôi. |
loop/price.php | Tệp hiển thị giá sản phẩm. |
C. Cách tùy chỉnh Tệp Template (Theme Overrides)
Quy tắc VÀNG: Không bao giờ chỉnh sửa trực tiếp các tệp trong thư mụcwp-content/plugins/woocommerce/templates/. Nếu bạn làm vậy, các thay đổi sẽ bị mất khi WooCommerce cập nhật.Cách Tùy chỉnh Đúng:
- Tạo một thư mục mới có tên là
woocommercebên trong thư mục Theme/Child Theme đang hoạt động của bạn. - Sao chép tệp template bạn muốn chỉnh sửa (ví dụ:
templates/single-product.php) và dán vào thư mục mới tạo (your-theme/woocommerce/single-product.php). - Chỉnh sửa tệp trong thư mục Theme của bạn. WooCommerce sẽ tự động ưu tiên tệp trong thư mục Theme thay vì tệp gốc trong Plugin.
3. Các Lớp (Classes) và Hàm PHP Cơ bản
Nếu bạn phát triển plugin hoặc muốn tương tác sâu hơn với WooCommerce, bạn sẽ làm việc với các lớp (class) và hàm:WC_Product: Lớp cơ bản để thao tác với dữ liệu sản phẩm.WC_Customer: Lớp quản lý dữ liệu của khách hàng.WC_Order: Lớp xử lý dữ liệu đơn hàng.- Hàm cơ bản:
wc_get_product(),WC()->cart,is_woocommerce()(kiểm tra xem bạn có đang ở trang WooCommerce không).