Hiển thị cho trẻ em các lưu trữ danh mục con trong tiện ích Danh mục sản phẩm Woocommerce

Tôi đang xây dựng một cửa hàng với Woocommerce và sử dụng tiện ích Danh mục sản phẩm WooCommerce. Tôi đã đặt nhiều danh mục sản phẩm với các danh mục phụ. Một trong những danh mục này là “Áp phích” và có một số danh mục phụ, như “Dấu hiệu ngôi sao”, “Du lịch”, “Thiên nhiên”…

Theo mặc định, Woocommerce chỉ hiển thị các danh mục mẹ tốt. Nếu tôi nhấp vào một danh mục “áp phích”, tôi sẽ được chuyển hướng đến trang lưu trữ danh mục “áp phích” và tiện ích hiển thị tất cả các danh mục con “Áp phích” và nó rất hoàn hảo.

Bây giờ, nếu tôi nhấp vào một trong các danh mục con “Áp phích” này, tôi sẽ được chuyển hướng đến trang lưu trữ tương ứng, nhưng điều hướng của tôi không hiển thị tất cả các danh mục phụ con “Áp phích” khác nữa.

Câu hỏi:
Làm cách nào để lấy tất cả các danh mục phụ và danh mục phụ “anh chị em” trong khi duyệt danh mục con?

Ví dụ ngẫu nhiên về điều hướng tiêu chuẩn khi thu gọn:

Phone CasesMugsPillowsPostersShirtsStickers

Ví dụ về điều hướng khi “Áp phích” đã được nhấp vào:

Phone CasesMugsPillowsPosters--Star Signs--Travel--Nature--Abstract--TypographyShirtsStickers

Khi một danh mục con được nhấp vào, ví dụ: “Tự nhiên”, điều hướng sẽ trở lại giống như ví dụ đầu tiên đã cho, tất cả đều được thu gọn. Nhưng tôi muốn nó tiếp tục được mở rộng như trong ví dụ thứ hai.

Dưới đây là các cài đặt của tôi cho tiện ích Danh mục sản phẩm Woocommerce:

Bất kỳ trợ giúp sẽ được đánh giá cao.

Cài đặt của bạn là chính xác. Mã bên dưới chỉ nhắm mục tiêu đến các trang danh mục lưu trữ và hiện tại nó sẽ hiển thị tất cả các danh mục con trong tiện ích Danh mục sản phẩm Woocommerce, cho danh mục con hiện tại:

add_filter('woocommerce_product_categories_widget_args', 'widget_product_categories_list_args', 10, 1);
function widget_product_categories_list_args( $list_args ) {
    global $wp_query;

    // Only for category archives pages
    if ( is_tax( $list_args['taxonomy'] ) ):
        // Get current category
        $current_cat = $wp_query->queried_object;

        // Get all Included category terms IDs in the widget
        $included_ids = explode( ',', $list_args['include'] );

        // Get All Childrens Ids from parent term or from current term
        if($current_cat->parent != 0 )
            $childrens = get_term_children( $current_cat->parent, $list_args['taxonomy'] );
        else
            $childrens = get_term_children( $current_cat->term_id, $list_args['taxonomy'] );

        // Loop through Children term Ids and add them to existing included ones
        foreach( $childrens as $child )
            $included_ids[] = $child;

        // Replace included product category term IDs in the $args array
        $list_args['include'] = $included_ids;
    endif;

    return $list_args;
}

Mã nằm trong tệp function.php của chủ đề con đang hoạt động (hoặc chủ đề hoạt động).

Đã thử nghiệm và hoạt động.