- shares
- Facebook Messenger
- Gmail
- Viber
- Skype
Sau một thời gian sử dụng WooCommerce, bạn phát hiện ra không thể thêm sản phẩm vào giỏ hàng hay mỗi lần thêm sản phẩm vào giỏ hàng nhưng không thể xóa. Đó là một trong những lỗi giỏ hàng phổ biến. Nếu bạn không thể xóa sản phẩm trên giỏ hàng , thậm trí xóa cache trình duyệt. Trong bài viết này bạn sẽ gợi ý các cách để bạn có thể sửa lỗi này.
Lỗi giỏ hàng – Không thể xóa sản phẩm
Đầu tiên, bạn kiểm tra giao diện WordPress, có tương thích với phiên bản WooCommerce của bạn đang dùng. bằng cách truy cập WooCommerce > Status. Trang này sẽ nói cho bạn các files & hàm không tương thích, đó là tệp template của WooCommerce phiên bản cũ. Bạn cũng nên nâng cấp mới WordPress & cập nhật plugin WooCommerce thường xuyên. Nếu sau khi cập nhật lỗi vẫn chưa được giải quyết, bạn có thể tham khảo những nguyên nhân lỗi giỏ hàng trong WooCommerce.
WooCommerce quản lý giỏ hàng bởi table woocommerce_sessions
. Dữ liệu của bảng này sẽ tăng nhanh chóng khi website có lượng truy cập nhiều. Mỗi khi người dùng thêm sản phẩm vào giỏ hàng, một bản ghi mới được thêm vào bảng này. Nếu bạn gặp lỗi không thêm sản phẩm, tức là không lưu giá trị vào bảng woocommerce_sessions thất bại. Điều này hiếm khi xẩy ra?
Ngược lại, sản phẩm trong giỏ hàng không thể xóa nghĩa là dữ liệu trong bảng này không mất đi, khi thực hiện thao tác xóa.
Khi mình sửa chữa website WordPress cho khách hàng, nhiều người đã bị lỗi này & không biết phải sử lý như thế nào. Và mình đã tìm ra một vấn đề chủ chốt. Nguyên nhân này dẫn đến bảng woocommerce_sessions hoạt động không chính xác. Khi di chuyển wordpress site hay sao lưu dữ liệu bị gián đoạn hoặc convert WordPress SQLite , quá trình đó rất có thể làm lỗi cấu trúc bảng.
WooCommerce định nghĩa cấu trúc bảng woocommerce_sessions:
CREATE TABLE `wp_woocommerce_sessions` ( `session_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `session_key` char(32) COLLATE utf8mb4_unicode_ci NOT NULL, `session_value` longtext COLLATE utf8mb4_unicode_ci NOT NULL, `session_expiry` bigint(20) unsigned NOT NULL, PRIMARY KEY (`session_id`), UNIQUE KEY `session_key` (`session_key`) ) ENGINE=MyISAM AUTO_INCREMENT=3972 DEFAULT CHARSET=utf8
Sử dụng lệnh sql sau bạn kiểm tra cấu trúc bảng này trên CSDL của bạn.
show create table wp_woocommerce_sessions
Bạn có thể thiếu AUTO_INCREMENT với trường session_id. Để bổ xung kiểu AI tại giao diện phpMyadmin bạn nhấn vào tùy chọn AI. sau đó nhấn Lưu để lại.
Nếu thiếu khai báo UNIQUE KEY, bạn có thể tạo lại key bằng lệnh SQL sau:
ALTER TABLE wp_woocommerce_sessions DROP INDEX session_key, ADD UNIQUE KEY `session_key` (`session_key`)
Hoặc nếu không thể sử dụng lệnh trên chúng ta có thể tạo lại bảng wp_woocommerce_sessions với lệnh SQL dưới đây:
CREATE TABLE `wp_woocommerce_sessions` ( `session_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `session_key` char(32) COLLATE utf8mb4_unicode_ci NOT NULL, `session_value` longtext COLLATE utf8mb4_unicode_ci NOT NULL, `session_expiry` bigint(20) unsigned NOT NULL, PRIMARY KEY (`session_id`), UNIQUE KEY `session_key` (`session_key`) ) ENGINE=MyISAM AUTO_INCREMENT=3972 DEFAULT CHARSET=utf8
Nếu bạn tìm ra một lý do khác cho lỗi này, xin chia sẻ với chúng tôi bằng cách để lại bình luận dưới bài viết này nhé. Chúc bạn thành công.
Hãy cho mình biết suy nghĩ của bạn trong phần bình luận bên dưới bài viết này. Hãy theo dõi kênh chia sẻ kiến thức WordPress của Hoangweb trên Twitter và Facebook
- shares
- Facebook Messenger
- Gmail
- Viber
- Skype