Ẩn mặt hàng trong menu giỏ hàng khi giỏ hàng trống

Tôi có một câu hỏi thú vị từ một người dùng muốn ẩn mục giỏ hàng khỏi menu khi giỏ hàng trống. Hướng dẫn này sẽ chỉ hoạt động nếu bạn đang sử dụng plugin WooCommerce .

Tôi đã thêm các đoạn mã PHP đơn giản vào tệp functions.php của mình. Đây là mã

/**
 * Hiding the cart menu item when cart is empty
 *
 * @author   Paul
 * @license  GPL 2.0+
 */
function paul_nav_menu_items( $items, $menu ) {
	//* get the cart page id
	$cart_page_id = get_option( 'woocommerce_cart_page_id' );
	if( ! empty( $cart_page_id ) ) {
		foreach( $items as $key => $item ) {
			if( $item->object_id === $cart_page_id && WC()->cart->is_empty() ) {
				unset( $items[ $key ] ); //* removing the cart menu item from list
			}
		}
	}
	return $items;
}
add_filter( 'wp_get_nav_menu_items', 'paul_nav_menu_items', 10, 2 );

Có một bộ lọc wp_get_nav_menu_items đang trả về các mục menu dưới dạng một mảng. Tôi đã nhắm mục tiêu bộ lọc này và xóa mục menu giỏ hàng khỏi danh sách. Phương thức WC () -> cart-> is_empty () đang kiểm tra xem giỏ hàng / túi của bạn có trống hay không. Sử dụng hàm unset () PHP Tôi đang xóa một mục khỏi mảng hiện có. Sau đó, tôi sẽ trả lại biến $ items đã cập nhật cho quá trình tiếp theo. Hãy thử mã này và cho tôi biết nó đang hoạt động như thế nào vào cuối của bạn.