Hướng dẫn thêm ô tìm kiếm cho Taxonomy không sử dụng plugin trong wordpress

Hướng dẫn
thêm ô tìm kiếm cho taxonomy

Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách thêm ô tìm kiếm cho taxonomy (Danh mục phân cấp) trong giao diện quản trị WordPress. Tính năng này giúp quản trị viên dễ dàng tìm kiếm danh mục một cách nhanh chóng, đặc biệt khi danh sách danh mục quá dài.

Tại Sao Cần Thêm Ô Tìm Kiếm Cho Danh Mục?

  • Tiết kiệm thời gian: Với các trang web có hàng trăm danh mục, việc tìm kiếm thủ công rất mất thời gian.
  • Tăng hiệu quả quản lý: Ô tìm kiếm giúp lọc danh mục ngay lập tức, hiển thị cả danh mục cha khi tìm thấy danh mục con.
  • Tương thích với mọi taxonomy phân cấp: Mã này hoạt động trên tất cả các taxonomy như danh mục bài viết, danh mục sản phẩm WooCommerce, hoặc bất kỳ taxonomy tùy chỉnh nào.

Các Bước Thực Hiện

Bước 1: Thêm Mã Vào Tệp functions.php

Để thêm ô tìm kiếm, bạn cần chèn đoạn mã sau vào tệp functions.php của theme đang sử dụng. Nếu bạn sử dụng child theme, hãy thêm mã vào child theme để tránh mất thay đổi khi cập nhật theme.

Sao chép đoạn mã sau và dán vào cuối tệp functions.php:

/*
* Thêm ô tìm kiếm cho tất cả taxonomy có dạng phân cấp cha - con
* Author: d3vduy
*/
function add_box_search_to_all_hierarchical_taxonomies() {
    ?>
    <script>
        document.addEventListener('DOMContentLoaded', function () {
            function addSearchToTab(tabPanel) {
                if (!tabPanel.querySelector('.taxonomy-search-wrapper')) {
                    const searchWrapper = document.createElement('div');
                    searchWrapper.classList.add('taxonomy-search-wrapper');
                    searchWrapper.style.marginBottom = '10px';

                    const searchInput = document.createElement('input');
                    searchInput.type = 'text';
                    searchInput.placeholder = 'Tìm kiếm trong danh mục...';
                    searchInput.classList.add('taxonomy-search-input');
                    searchInput.style.width = '100%';
                    searchInput.style.padding = '5px';

                    searchWrapper.appendChild(searchInput);
                    tabPanel.prepend(searchWrapper);

                    // Sự kiện tìm kiếm
                    searchInput.addEventListener('input', function () {
                        const keyword = this.value.toLowerCase().trim();
                        const items = tabPanel.querySelectorAll('.categorychecklist li');

                        items.forEach(item => {
                            const label = item.querySelector('label');
                            const isMatch = label && label.textContent.toLowerCase().includes(keyword);

                            if (isMatch) {
                                item.style.display = ''; // Hiển thị mục khớp
                                showParents(item); // Hiển thị các mục cha
                            } else {
                                item.style.display = 'none'; // Ẩn mục không khớp
                            }
                        });
                    });
                }
            }

            // Hiển thị tất cả cha của một mục nếu mục đó khớp
            function showParents(item) {
                let parentLi = item.closest('li'); // Lấy mục cha li
                while (parentLi) {
                    parentLi.style.display = ''; // Hiển thị cha
                    parentLi = parentLi.closest('ul').closest('li'); // Lặp lên cấp cha tiếp theo
                }
            }

            // Lấy tất cả các taxonomy meta box trên trang
            const taxonomyMetaBoxes = document.querySelectorAll('.categorydiv');
            taxonomyMetaBoxes.forEach(metaBox => {
                const tabsPanels = metaBox.querySelectorAll('.tabs-panel');
                tabsPanels.forEach(panel => {
                    // Áp dụng tìm kiếm cho cả "Tất cả danh mục" và "Dùng nhiều nhất"
                    if (panel.id.includes('-all') || panel.id.includes('-pop')) {
                        addSearchToTab(panel);
                    }
                });

                // Xử lý sự kiện click để chuyển đổi giữa các tab
                const tabs = metaBox.querySelectorAll('.category-tabs a');
                tabs.forEach(tab => {
                    tab.addEventListener('click', function (event) {
                        event.preventDefault();
                        tabs.forEach(t => t.classList.remove('active'));
                        tab.classList.add('active');

                        tabsPanels.forEach(panel => {
                            panel.style.display = 'none';
                        });

                        const selectedPanel = metaBox.querySelector(tab.getAttribute('href'));
                        if (selectedPanel) {
                            selectedPanel.style.display = 'block';
                        }
                    });
                });

                // Mặc định hiển thị tab đầu tiên
                const defaultTab = metaBox.querySelector('.category-tabs a');
                if (defaultTab) {
                    defaultTab.classList.add('active');
                    const defaultPanel = metaBox.querySelector(defaultTab.getAttribute('href'));
                    if (defaultPanel) {
                        defaultPanel.style.display = 'block';
                    }
                }
            });
        });
    </script>
    <style>
        .taxonomy-search-wrapper {
            margin: 10px 0;
        }
        .taxonomy-search-input {
            font-size: 14px;
            width: 100%;
            height: 38px;
            padding: 5px;
            border: 1px solid #ddd;
            border-radius: 4px;
        }
        .category-tabs a.active {
            font-weight: bold;
        }
    </style>
    <?php
}
add_action('admin_footer', 'add_box_search_to_all_hierarchical_taxonomies');

Bước 2: Lưu Tệp và Kiểm Tra Kết Quả

  1. Lưu tệp functions.php.
  2. Vào trang quản trị WordPress, mở một bài viết hoặc sản phẩm (nếu dùng WooCommerce).
  3. Kiểm tra khu vực danh mục (thường nằm ở cột bên phải). Bạn sẽ thấy một ô tìm kiếm xuất hiện phía trên danh sách danh mục.

Ô tìm kiếm danh mục WordPress

Hình 1: Ô tìm kiếm được thêm vào danh mục bài viết.

Bước 3: Kiểm tra đoạn code

  • Nhập từ khóa: Gõ tên danh mục hoặc một phần của nó vào ô tìm kiếm.
  • Kết quả hiển thị: Danh mục khớp với từ khóa sẽ xuất hiện ngay lập tức. Nếu danh mục con khớp, các danh mục cha của nó cũng sẽ hiển thị.
  • Chuyển tab: Thêm ô tìm kiếm cho taxonomy hoạt động trên cả tab “Tất cả danh mục” và “Dùng nhiều nhất”.

Tìm kiếm danh mục con

Hình 2: Kết quả tìm kiếm hiển thị danh mục con và danh mục cha.

Lưu Ý

  • Sao lưu tệp functions.php trước khi chỉnh sửa để tránh lỗi.
  • Nếu bạn sử dụng plugin như Advanced Custom Fields (ACF) hoặc taxonomy tùy chỉnh, hãy kiểm tra xem ô tìm kiếm có hiển thị đúng không.
  • Mã này chỉ hoạt động trong giao diện quản trị, không ảnh hưởng đến giao diện người dùng.

Lời kết

Như vậy, chúng tôi đã hướng dẫn bạn thêm ô tìm kiếm cho taxonomy trong WordPress. Với đoạn mã trên, bạn có thể dễ dàng triển khai tính năng này mà không cần cài đặt plugin phức tạp, tối ưu hóa quy trình quản lý nội dung. Chúc các bạn thành công! Cảm ơn các bạn đã đến với thietkeweb.dev. Hẹn các bạn ở bài viết hướng dẫn tiếp theo, nhớ theo dõi để biết được nhiều mẹo hay trong WordPress!

Chia sẻ bài viết

Bài viết liên quan

Hướng Dẫn Liên Kết và Lập Chỉ Mục Bài Viết Với Google Search Console (GSC)

Khi bạn đăng một bài viết mới trên website, Google sẽ không tự động biết ngay để hiển thị bài đó trên kết quả tìm…

Xem thêm

Google PageSpeed Insights: Giải pháp tối ưu tốc độ website chuẩn SEO cho doanh nghiệp

Trong thời đại số, tốc độ website không chỉ là yếu tố kỹ thuật mà còn quyết định trực tiếp đến trải nghiệm người dùng,…

Xem thêm

Những cách nâng cấp website và lợi ích của nâng cấp website

Việc nâng cấp website là cần thiết vì website giống như “cửa hàng online” đại diện cho doanh nghiệp, thương hiệu của bạn trên môi…

Xem thêm

Hướng dẫn ẩn Plugin khỏi danh sách Plugin trong WordPress Dashboard

Trong một số trường hợp, bạn có thể muốn ẩn plugin khỏi danh sách plugin trong Dashboard WordPress, ví dụ: Giấu các plugin kỹ thuật…

Xem thêm

Quy Trình Thiết Kế Website WordPress Chuyên Nghiệp – Tối Ưu Chuẩn SEO & UX

Bạn đang tìm hiểu quy trình thiết kế website WordPress để phục vụ cho hoạt động kinh doanh online hoặc xây dựng thương hiệu cá…

Xem thêm

7 Tiêu Chí Thiết Kế Website WordPress Chuyên Nghiệp – Tối Ưu Hiệu Quả Bán Hàng

Bạn đang tìm kiếm đơn vị thiết kế website WordPress chuyên nghiệp, hiệu quả để phục vụ kinh doanh và bán hàng online? Một website…

Xem thêm

Từ Khóa Là Gì? Top 12 Loại Từ Khóa Google & Cách Tối Ưu SEO

  Bạn đang bắt đầu với SEO nhưng chưa biết từ khóa là gì, làm sao để chọn từ khóa đúng và tối ưu website…

Xem thêm

SEO Tự Nhiên Là Gì? Cách SEO Tự Nhiên Hiệu Quả Năm 2025

Bạn đang tìm cách đưa website lên top Google một cách bền vững mà không tốn quá nhiều chi phí quảng cáo? SEO tự nhiên…

Xem thêm

Hướng dẫn thêm ô tìm kiếm sản phẩm trong WordPress

Bạn muốn tích hợp thêm ô tìm kiếm sản phẩm trên website của mình giống như các sàn thương mại điện tử Shopee, Lazada, Tiki…

Xem thêm

Làm Website Cần Những Gì Để Bán Hàng Hiệu Quả?

Bạn đang chuẩn bị bán hàng online và muốn thiết kế website riêng? Vậy bạn đã biết làm website cần những gì để bán hàng…

Xem thêm

Tối Ưu Website WordPress Cho SEO: Bí Quyết Đưa Website Lên Top Google

Bạn đang sở hữu một website WordPress nhưng vẫn chưa thấy hiệu quả trên Google? Đừng lo! Bài viết này sẽ chia sẻ cho bạn…

Xem thêm

Tự tạo website chi tiết cho người mới bắt đầu từ A-Z

💡 Tại sao bạn nên có một website? Trong thời đại số hóa ngày nay, việc sở hữu một website cá nhân hoặc doanh nghiệp…

Xem thêm
Mr ChíMr Chí

Yêu cầu nhận báo giá

Quý khách vui lòng chọn giao diện gửi cho Digitech, chúng tôi sẽ liên hệ lại ngay với bạn!...

Google reCaptcha: Khóa trang không hợp lệ.

Yêu cầu nhận báo giá

Quý khách vui lòng chọn giao diện gửi cho Digitech, chúng tôi sẽ liên hệ lại ngay với bạn!...