Giới thiệu dự án

Thương mại điện tử (TMĐT) tại Việt Nam đang duy trì tốc độ tăng trưởng kép hàng năm (CAGR) trên 20%, trở thành phương thức phân phối trọng yếu trong ngành thời trang và giày dép (Footwear & Sneaker). Tuy nhiên, các cửa hàng bán lẻ truyền thống như thương hiệu Nguyễn Luân Sneaker thường xuyên đối mặt với điểm nghẽn nghiêm trọng trong quy trình vận hành: quản lý tồn kho thủ công gây sai lệch số liệu, kênh tiếp cận khách hàng cục bộ, tỷ lệ bỏ giỏ hàng cao do thiếu cổng thanh toán tự động, và hoàn toàn thiếu vắng công cụ thu thập dữ liệu hành vi người dùng.

Đề tài "Xây dựng Website bán giày Nguyễn Luân Sneaker dựa trên nền tảng WordPress" do sinh viên Nguyễn Hoàng Anh (Khoa Công nghệ Thông tin – Trường Đại học Hải Phòng) thực hiện nhằm giải quyết trực tiếp bài toán chuyển đổi số bán lẻ. Hệ thống tận dụng kiến trúc module linh hoạt của WordPress kết hợp nền tảng TMĐT WooCommerce để thiết lập giải pháp bán hàng trực tuyến toàn diện, tối ưu chi phí và có tính tùy biến cao.

graph LR
    A[Khách hàng / Vãng lai] -->|HTTP/HTTPS| B[Giao diện UI/UX Web]
    C[Nhân viên / Quản trị] -->|Xác thực RBAC| B
    B --> D[WordPress Core & WooCommerce Engine]
    D --> E[(Cơ sở dữ liệu MySQL 8.0)]
    D --> F[Cổng thanh toán & Vận chuyển]

Mục tiêu nghiên cứu cụ thể

  1. Chuẩn hóa cơ sở dữ liệu và quản trị kho: Xây dựng hệ thống quản lý danh mục đa tầng (sneaker lifestyle, running, basketball), quản lý biến thể phức tạp (size 36–45, phối màu) và theo dõi tồn kho theo thời gian thực.
  2. Thiết kế luồng trải nghiệm người dùng (UX/UI): Giảm thiểu ma sát trong phễu mua hàng với tính năng tìm kiếm thông minh, lọc đa tiêu chí (faceted search) và quy trình thanh toán (checkout) tối giản.
  3. Phân quyền truy cập đa cấp bậc (RBAC): Thiết lập phân quyền chặt chẽ giữa 4 nhóm tác nhân: Administrator (Quản trị viên), Shop Manager/Staff (Nhân viên bán hàng), Registered Customer (Khách hàng thành viên) và Guest (Khách vãng lai).
  4. Tối ưu hóa công cụ tìm kiếm (SEO) và hiệu năng: Cấu hình cấu trúc URL chuẩn SEO, tự động sinh schema rich snippet cho sản phẩm, đạt điểm Google PageSpeed Insights trên 85 điểm cho cả Mobile và Desktop.
  5. Đo lường và báo cáo: Tích hợp bộ công cụ theo dõi luồng tương tác của khách hàng và tự động hóa xuất báo cáo doanh thu theo mốc thời gian.

Phạm vi và giới hạn hệ thống

  • Phạm vi triển khai: Áp dụng cho chuỗi bán lẻ Nguyễn Luân Sneaker; số lượng mã sản phẩm (SKU) dự kiến từ 500 – 2.000 sản phẩm; hỗ trợ thanh toán qua chuyển khoản ngân hàng, ví điện tử và COD (Cash on Delivery).
  • Giới hạn kỹ thuật: Hệ thống chưa tích hợp thuật toán Machine Learning gợi ý sản phẩm tự động theo thời gian thực (real-time recommendation) mà sử dụng thuật toán lọc quan hệ (relational querying) qua danh mục và thẻ tag.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Khảo sát các giải pháp công nghệ trên thị trường cho thấy sự khác biệt rõ rệt về chi phí, khả năng tùy biến và mức độ phụ thuộc công nghệ:

Tiêu chí Custom Framework (Laravel/Django) SaaS Đóng gói (Shopify/Haravan) Nền tảng WordPress + WooCommerce
Chi phí khởi tạo Rất cao ($1.500 - $3.000) Thấp ban đầu ($30 - $100/tháng) Rất thấp (Tối ưu hạ tầng LAMP/LEMP)
Thời gian triển khai 3 - 6 tháng 1 - 2 tuần 2 - 4 tuần
Khả năng kiểm soát dữ liệu Toàn quyền sở hữu DB Bị khóa dữ liệu (Vendor Lock-in) Toàn quyền kiểm soát 100% MySQL Database
Khả năng mở rộng tính năng Tùy biến mã nguồn tuyệt đối Phụ thuộc App Store đóng phí Không giới hạn nhờ hệ sinh thái Hooks/Plugins
Tối ưu hóa SEO On-page Cần code thủ công toàn bộ Hạn chế cấu trúc URL Rất mạnh (Tích hợp Yoast SEO/Rank Math)

Ma trận ưu tiên yêu cầu người dùng (MoSCoW)

  • Must have (Bắt buộc phải có): Đăng ký/đăng nhập xác thực session, danh mục sản phẩm đa cấp, quản lý biến thể size/màu, giỏ hàng (Cart), cổng thanh toán COD/Bank Transfer, phân quyền RBAC.
  • Should have (Nên có): Bộ lọc thuộc tính sản phẩm nhanh (AJAX filtering), tìm kiếm theo từ khóa, đánh giá/bình luận sản phẩm theo số sao (Product Rating).
  • Could have (Có thể mở rộng): Tích hợp cổng thanh toán tự động qua QR Code VietQR, thông báo trạng thái đơn hàng qua email tự động bằng SMTP.
  • Won't have (Chưa thực hiện ở giai đoạn này): Đa ngôn ngữ (i18n đa quốc gia), tính năng AR (thử giày thực tế ảo).

Thiết kế hệ thống

Hệ thống được thiết kế theo mô hình 3 lớp (3-Tier Architecture): Lớp trình diễn (Presentation Layer - HTML5/CSS3/JavaScript/Elementor), Lớp xử lý nghiệp vụ (Business Logic Layer - PHP 8.1 & WooCommerce Engine), và Lớp dữ liệu (Data Layer - MySQL 8.0).

graph TD
    subgraph Client_Layer [Tầng Trình Diễn]
        UI_Guest[Giao diện Khách hàng / Responsive UI]
        UI_Admin[Bảng điều khiển Quản trị WP-Admin]
    end

    subgraph Logic_Layer [Tầng Xử Lý Nghiệp Vụ - PHP 8.1 Engine]
        Router[WP Core Routing & Rewrite Rules]
        AuthModule[Module Xác thực & RBAC Policy]
        ProductModule[Module Quản lý Sản phẩm & Biến thể]
        CartModule[Module Giỏ hàng & Khuyến mại]
        OrderModule[Module Xử lý Đơn hàng & Thanh toán]
        SEOEngine[Yoast SEO Engine & Schema Generator]
    end

    subgraph Data_Layer [Tầng Cơ Sở Dữ Liệu - MySQL 8.0]
        WP_Posts[(Bảng wp_posts - Sản phẩm/Đơn hàng)]
        WP_PostMeta[(Bảng wp_postmeta - Chi tiết/Giá/Kho)]
        WP_Users[(Bảng wp_users & wp_usermeta)]
        WP_Terms[(Bảng wp_terms & wp_term_taxonomy)]
    end

    UI_Guest --> Router
    UI_Admin --> Router
    Router --> AuthModule
    Router --> ProductModule
    Router --> CartModule
    Router --> OrderModule
    Router --> SEOEngine
    ProductModule --> WP_Posts
    ProductModule --> WP_PostMeta
    OrderModule --> WP_Posts
    OrderModule --> WP_PostMeta
    AuthModule --> WP_Users
    ProductModule --> WP_Terms

Ngăn xếp công nghệ (Technology Stack)

  • Core Platform: WordPress Version 6.4.x.
  • E-Commerce Engine: WooCommerce 8.6.x.
  • Backend Runtime: PHP 8.1.x (Hỗ trợ JIT Compiler, Typed Properties, tối ưu bộ nhớ OPcache).
  • Database Management System: MySQL 8.0 (InnoDB Engine, UTF8MB4 Collation).
  • UI/UX Builder & Stylesheet: Elementor Pro 3.x, Responsive CSS Grid/Flexbox, jQuery/Vanilla JavaScript ES6.
  • SEO & Tracking Tools: Yoast SEO 22.x, MonsterInsights (Google Analytics 4), WPForms.
  • Web Server: Apache 2.4 / Nginx Reverse Proxy với cấu hình nén Gzip/Brotli.

Thiết kế cơ sở dữ liệu quan hệ (Database Schema)

Hệ thống sử dụng cấu trúc lưu trữ EAV (Entity-Attribute-Value) mở rộng của WordPress, tối ưu hóa các bảng chính:

  • wp_users & wp_usermeta: Lưu trữ thông tin định danh, mật khẩu băm chuẩn bcrypt/phpass, địa chỉ giao hàng và quyền (roles: administrator, shop_manager, customer).
  • wp_posts: Lưu trữ các thực thể bài viết, trang, và đặc biệt là các thực thể sản phẩm (post_type = 'product'), biến thể (post_type = 'product_variation'), và đơn hàng (post_type = 'shop_order').
  • wp_postmeta: Lưu trữ siêu dữ liệu sản phẩm bao gồm _price, _regular_price, _sale_price, _stock, _sku, _product_attributes.
  • wp_terms, wp_termmeta, wp_term_taxonomy, wp_term_relationships: Quản lý phân loại sản phẩm theo danh mục và thuộc tính (Size, Color, Brand).

Phương pháp luận phát triển (Methodology)

Dự án áp dụng mô hình phát triển Agile/Scrum rút gọn, chia làm 4 Sprint chính trong thời gian 10 tuần:

Sprint Thời gian Mục tiêu chính Sản phẩm đầu ra (Deliverables)
Sprint 1 Tuần 1 - 2 Khảo sát, phân tích Use Case, thiết lập môi trường LAMP/Localhost Đặc tả SRS, sơ đồ Use Case, CSDL Schema ban đầu
Sprint 2 Tuần 3 - 5 Thiết kế UI/UX, khởi tạo Theme, tùy biến taxonomy sản phẩm Giao diện Trang chủ, Trang sản phẩm, Trang chi tiết
Sprint 3 Tuần 6 - 8 Xây dựng nghiệp vụ giỏ hàng, thanh toán, phân quyền RBAC Luồng Checkout hoàn chỉnh, module quản lý đơn hàng
Sprint 4 Tuần 9 - 10 Kiểm thử, tối ưu SEO, bảo mật dữ liệu, bàn giao triển khai Báo cáo kiểm thử UAT, tài liệu hướng dẫn chuyển giao

Implementation và kết quả

Quy trình phát triển và hiện thực hóa mã nguồn

Hệ thống xử lý nghiệp vụ thông qua cơ chế Hook (Action & Filter) mạnh mẽ của WordPress/WooCommerce nhằm đảm bảo tính toàn vẹn dữ liệu khi thao tác giỏ hàng và cập nhật đơn hàng.

Dưới đây là mã nguồn PHP mẫu thể hiện thuật toán kiểm tra ràng buộc số lượng tồn kho theo thời gian thực khi khách hàng thêm biến thể giày (Size/Màu) vào giỏ hàng:

<?php
/**
 * Hook kiểm tra tính hợp lệ của tồn kho trước khi thêm sản phẩm vào giỏ
 * Đảm bảo khách hàng không đặt vượt quá tồn kho thực tế trong MySQL
 */
add_filter('woocommerce_add_to_cart_validation', 'validate_sneaker_stock_before_add', 10, 5);

function validate_sneaker_stock_before_add($passed, $product_id, $quantity, $variation_id = 0, $variations = array()) {
    // Xác định ID đối tượng cần kiểm tra
    $target_id = $variation_id ? $variation_id : $product_id;
    $product = wc_get_product($target_id);

    if (!$product || !$product->managing_stock()) {
        return $passed; // Bỏ qua nếu không kích hoạt quản lý kho
    }

    $current_stock = $product->get_stock_quantity();
    $cart = WC()->cart;
    $qty_in_cart = 0;

    // Duyệt giỏ hàng kiểm tra số lượng cùng loại đã thêm trước đó
    foreach ($cart->get_cart() as $cart_item_key => $values) {
        if ($values['data']->get_id() === $target_id) {
            $qty_in_cart += $values['quantity'];
        }
    }

    // Kiểm tra vượt ngưỡng tồn kho
    if (($qty_in_cart + $quantity) > $current_stock) {
        wc_add_notice(
            sprintf(
                __('Rất tiếc, mẫu giày này chỉ còn %d đôi trong kho (Bạn đã có %d đôi trong giỏ).', 'nguyenluan-sneaker'),
                $current_stock,
                $qty_in_cart
            ),
            'error'
        );
        return false;
    }

    return $passed;
}
?>

Để truy vấn các dòng sản phẩm bán chạy phục vụ bảng điều khiển quản trị viên và trang chủ, hệ thống sử dụng câu lệnh SQL tối ưu hóa chỉ mục:

-- Truy vấn Top 5 sản phẩm Sneaker bán chạy nhất dựa trên dữ liệu đơn hàng thành công
SELECT 
    p.ID AS product_id,
    p.post_title AS product_name,
    SUM(CAST(oim.meta_value AS UNSIGNED)) AS total_units_sold,
    pm_price.meta_value AS current_price
FROM wp_posts p
INNER JOIN wp_woocommerce_order_itemmeta oim_prod 
    ON p.ID = oim_prod.meta_value AND oim_prod.meta_key = '_product_id'
INNER JOIN wp_woocommerce_order_items oi 
    ON oim_prod.order_item_id = oi.order_item_id
INNER JOIN wp_woocommerce_order_itemmeta oim 
    ON oi.order_item_id = oim.order_item_id AND oim.meta_key = '_qty'
INNER JOIN wp_posts o 
    ON oi.order_id = o.ID
LEFT JOIN wp_postmeta pm_price 
    ON p.ID = pm_price.post_id AND pm_price.meta_key = '_price'
WHERE o.post_type = 'shop_order' 
  AND o.post_status IN ('wc-completed', 'wc-processing')
GROUP BY p.ID, p.post_title, pm_price.meta_value
ORDER BY total_units_sold DESC
LIMIT 5;

Kiểm thử và đánh giá hiệu năng (Testing & Validation)

Hệ thống đã trải qua quá trình kiểm thử toàn diện từ đơn vị (Unit Test), tích hợp (Integration Test) đến kiểm thử chấp nhận người dùng (UAT):

Kịch bản kiểm thử (Test Scenario) Số ca kiểm thử (Test Cases) Đạt (Passed) Lỗi (Failed) Tỷ lệ thành công
Xác thực & Phân quyền RBAC 12 12 0 100%
Tìm kiếm & Lọc thuộc tính (Size/Color) 18 18 0 100%
Xử lý Giỏ hàng & Cập nhật số lượng 15 15 0 100%
Quy trình Thanh toán & Xác nhận Đơn hàng 20 19 1 (Đã fix) 100%
Tải trang & Chịu tải đồng thời 8 8 0 100%

Kết quả Benchmark hiệu năng thực tế

  • Thời gian phản hồi máy chủ (TTFB): 280ms (Môi trường Apache 2.4, PHP 8.1 OPcache enabled).
  • Thời gian tải trang đầy đủ (Full Page Load Time): 1.45 giây trên mạng 4G tiêu chuẩn.
  • Chỉ số Core Web Vitals: LCP (Largest Contentful Paint) đạt 1.8s; CLS (Cumulative Layout Shift) đạt 0.02; FID (First Input Delay) đạt 18ms.
  • Kiểm thử chịu tải (Stress Test): Duy trì độ ổn định khi có 150 người dùng đồng thời (Concurrent Users) thực hiện thao tác duyệt sản phẩm và thêm giỏ hàng mà không xảy ra lỗi 502/504 Gateway Timeout.

Đổi mới và đóng góp

  1. Chuẩn hóa cấu trúc dữ liệu biến thể giày: Khắc phục nhược điểm tải chậm khi xử lý nhiều biến thể bằng cách kết hợp cơ chế lưu đệm Transient API của WordPress, giảm 42% số lượng truy vấn SQL lặp trên mỗi trang chi tiết sản phẩm.
  2. Quy trình thanh toán một trang (One-Step Checkout): Cải tiến luồng thanh toán WooCommerce truyền thống từ 3 bước phức tạp thành 1 giao diện trực quan, giảm tỷ lệ bỏ dở đơn hàng xuống 28%.
  3. Tích hợp giải pháp SEO tự động: Tự động tạo dữ liệu có cấu trúc Schema.org (Product, Offer, AggregateRating), giúp các sản phẩm sneaker của cửa hàng hiển thị trực tiếp giá và số sao đánh giá trên kết quả tìm kiếm Google.
Mức độ cải thiện hiệu suất vận hành:
- Tốc độ xử lý đơn hàng của nhân viên:  [▲ 60% nhanh hơn]
- Thời gian tìm kiếm sản phẩm:          [▲ 45% nhanh hơn]
- Chi phí bảo trì hệ thống hàng năm:   [▼ 70% thấp hơn SaaS]

Ứng dụng thực tế và triển khai

Kịch bản vận hành thực tế

  1. Khách hàng truy cập: Lọc theo thương hiệu (ví dụ: Nike Air Jordan), chọn size 42, màu trắng. Hệ thống kiểm tra tức thời tồn kho, cho phép thanh toán và gửi thông báo xác nhận tự động.
  2. Nhân viên xử lý: Nhận thông báo đơn hàng mới tại Dashboard quản trị, duyệt đơn, chuyển trạng thái "Đang giao hàng", hệ thống tự động trừ kho vật lý.
  3. Quản trị viên: Xem biểu đồ trực quan về doanh thu theo tuần, tỷ lệ chuyển đổi và danh sách khách hàng thân thiết để lên chiến dịch khuyến mại.

Phân tích chi phí - lợi ích (Cost-Benefit Analysis)

pie title Tỷ trọng chi phí vận hành năm đầu tiên
    "Tên miền (.vn / .com)" : 15
    "Hosting Cloud NVMe SSD" : 45
    "Chứng chỉ SSL & Security" : 10
    "Bảo trì & Dự phòng" : 30
  • Chi phí triển khai ban đầu: Khoảng 3.500.000 – 5.000.000 VNĐ (Bao gồm Domain quốc tế, Cloud Hosting NVMe 4GB RAM, chứng chỉ SSL Let's Encrypt).
  • So sánh với giải pháp SaaS: Tiết kiệm khoảng 8.000.000 – 15.000.000 VNĐ/năm so với việc thuê nền tảng thương mại trả phí hàng tháng kèm phần trăm hoa hồng trên đơn hàng.
  • Thời gian hoàn vốn (ROI): Ước tính từ 2 – 4 tháng sau khi chính thức đưa vào vận hành nhờ tăng trưởng đơn hàng trực tuyến.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Bảng cơ sở dữ liệu wp_postmeta có thể phình to khi số lượng đơn hàng và sản phẩm vượt quá 50.000 bản ghi, gây suy giảm tốc độ truy vấn nếu không có chiến lược phân vùng bảng (Table Partitioning).
  • Hệ thống thanh toán chuyển khoản ngân hàng hiện tại mới dừng ở mức xác thực thủ công qua đối soát sao kê, chưa tích hợp Webhook đồng bộ tự động từ Open Banking API.

Hướng phát triển trong tương lai

  • Chuyển đổi kiến trúc Headless Commerce: Tách rời phần giao diện (Frontend) sử dụng Next.js/React kết nối với WordPress Backend qua WPGraphQL/REST API nhằm tăng tốc độ tải trang lên mức dưới 1 giây.
  • Tích hợp cổng thanh toán tự động: Đấu nối API trực tiếp với VNPay, MoMo, ZaloPay và VietQR Auto-Confirm.
  • Ứng dụng AI/Machine Learning: Xây dựng hệ thống gợi ý size giày dựa trên lịch sử mua sắm và hỗ trợ khách hàng tự động thông qua AI Chatbot tích hợp RAG.

Đối tượng hưởng lợi

  • Sinh viên ngành CNTT: Có tài liệu tham khảo chi tiết về quy trình phân tích thiết kế hệ thống phần mềm (SRS, Use Case, Sequence Diagram) áp dụng trên mã nguồn mở.
  • Lập trình viên Web: Nắm vững phương pháp tùy biến WooCommerce Hooks, tối ưu truy vấn MySQL và kỹ thuật xây dựng giao diện chuẩn responsive.
  • Doanh nghiệp bán lẻ nhỏ và vừa (SMEs): Sở hữu giải pháp chuyển đổi số bán hàng chi phí thấp, tự chủ hoàn toàn công nghệ và dữ liệu khách hàng.
  • Khách hàng tiêu dùng: Trải nghiệm mua sắm sneaker nhanh chóng, minh bạch về thông tin giá cả, tồn kho và hỗ trợ tra cứu đơn hàng tiện lợi.

Câu hỏi thường gặp

1. Yêu cầu phần cứng và môi trường tối thiểu để triển khai website là gì?

Máy chủ cần tối thiểu: CPU 2 Cores, RAM 2GB (Khuyến nghị 4GB cho WooCommerce), 20GB dung lượng ổ cứng NVMe SSD, hệ điều hành Linux (Ubuntu 22.04 LTS), chạy Web Server Nginx hoặc Apache 2.4, PHP phiên bản 8.1 trở lên và MySQL 8.0/MariaDB 10.6.

2. Hệ thống xử lý thế nào khi có nhiều người cùng đặt đôi giày cuối cùng trong kho?

WooCommerce sử dụng cơ chế Transaction Lock trong MySQL kết hợp với hook xác thực woocommerce_add_to_cart_validationwoocommerce_check_cart_items. Đơn hàng nào gửi yêu cầu thanh toán vào database trước sẽ được giữ hàng (hold stock), các yêu cầu gửi sau sẽ nhận được thông báo sản phẩm đã hết hàng.

3. Website có khả năng mở rộng (Scalability) khi số lượng sản phẩm tăng cao không?

Hệ thống hoàn toàn có thể mở rộng lên 5.000 – 10.000 sản phẩm bằng cách tích hợp Redis Object Cache để lưu đệm các truy vấn phức tạp, sử dụng Elasticsearch/Algolia cho module tìm kiếm, kết hợp mạng phân phối nội dung (Cloudflare CDN) để phân phối hình ảnh tĩnh.

4. Chi phí bảo trì hàng tháng của hệ thống là bao nhiêu?

Chi phí duy trì hệ thống rất thấp, chủ yếu gồm chi phí thuê Cloud Hosting (khoảng 150.000 – 300.000 VNĐ/tháng) và phí duy trì tên miền hàng năm (khoảng 300.000 – 600.000 VNĐ/năm). Toàn bộ mã nguồn WordPress và WooCommerce đều miễn phí bản quyền.

5. Website được bảo mật chống các cuộc tấn công phổ biến như thế nào?

Hệ thống được bảo vệ nhiều lớp: Mã hóa toàn bộ dữ liệu truyền tải bằng SSL/TLS (HTTPS), băm mật khẩu chuẩn bảo mật cao trong cơ sở dữ liệu, chống tấn công SQL Injection bằng cách chuẩn hóa dữ liệu qua $wpdb->prepare(), và ngăn chặn CSRF/XSS thông qua cơ chế WordPress Nonce Verification trên mọi biểu mẫu gửi lên máy chủ.


Kết luận

Đồ án tốt nghiệp "Xây dựng Website bán giày Nguyễn Luân Sneaker dựa trên nền tảng WordPress" của sinh viên Nguyễn Hoàng Anh đã hoàn thành xuất sắc các mục tiêu đề ra:

  • Hiện thực hóa thành công hệ thống bán hàng TMĐT hoàn chỉnh với đầy đủ các phân hệ quản lý sản phẩm, giỏ hàng, đặt hàng, quản trị kho và phân quyền người dùng.
  • Cung cấp cơ sở lý luận và thực nghiệm vững chắc về việc ứng dụng WordPress kết hợp WooCommerce trong giải quyết bài toán thương mại hóa thực tế của các doanh nghiệp bán lẻ thời trang.
  • Mở ra hướng tiếp cận thực tiễn, có khả năng ứng dụng và chuyển giao ngay cho cửa hàng Nguyễn Luân Sneaker nhằm gia tăng doanh thu, nâng cao năng lực cạnh tranh trong kỷ nguyên số.