Tối ưu URL WooCommerce: Đồng bộ hóa đường dẫn sản phẩm và danh mục

Tối ưu URL WooCommerce: Đồng bộ hóa đường dẫn sản phẩm và danh mục

10 views

Việc cấu hình đường dẫn (permalinks) trên website WooCommerce không chỉ ảnh hưởng đến trải nghiệm người dùng mà còn là yếu tố then chốt trong chiến lược SEO. Bài viết này sẽ đi sâu phân tích cách đồng bộ hóa đường dẫn trang sản phẩm và danh mục, loại bỏ các slug mặc định không cần thiết, và giải thích ý nghĩa sâu xa của việc này đối với hiệu suất trang web của bạn.

Tại sao đồng bộ hóa đường dẫn sản phẩm và danh mục lại quan trọng?

Việc có cấu trúc URL nhất quán và gọn gàng, ví dụ như your-domain.com/san-pham/ten-danh-muc thay vì your-domain.com/product-category/ten-danh-muc, mang lại nhiều lợi ích đáng kể:

  • Cải thiện SEO: Đường dẫn ngắn gọn, chứa từ khóa chính và không bị lặp từ khóa giúp công cụ tìm kiếm dễ dàng hiểu cấu trúc trang web và mức độ liên quan của nội dung. Nó cũng tránh tình trạng “keyword cannibalization” (nuốt chửng từ khóa) giữa các slug productproduct-category.
  • Nâng cao trải nghiệm người dùng (UX): URL dễ đọc, dễ nhớ và dễ chia sẻ. Người dùng có thể dễ dàng hình dung cấu trúc website và vị trí của mình trong hệ thống phân cấp sản phẩm.
  • Tăng tính chuyên nghiệp: Một cấu trúc URL rõ ràng thể hiện sự chỉnh chu và chuyên nghiệp của website, tạo ấn tượng tốt hơn với khách truy cập.

Hình ảnh minh họa cấu trúc URL trước và sau

Các bước cấu hình và ý nghĩa kỹ thuật

Để đạt được cấu trúc đường dẫn mong muốn, chúng ta cần thực hiện các bước cấu hình và can thiệp mã nguồn:

Đầu tiên, bạn cần đảm bảo đã có một trang tĩnh được chỉ định làm trang Shop của WooCommerce. Trang này nên có slug ngắn gọn, dễ hiểu, ví dụ san-pham.

  • Tạo trang Shop: Tạo một trang WordPress mới với tiêu đề “Sản phẩm” và slug là san-pham.
    Tạo trang sản phẩm với slug "san-pham"
  • Thiết lập trang Shop cho WooCommerce: Trong cài đặt WooCommerce, chọn trang vừa tạo làm trang Shop.
    Thiết lập trang "Sản phẩm" làm trang Shop

Tiếp theo, bạn cần cấu hình lại Permalinks trong WordPress:

  • Product category base: Đặt là san-pham.
  • Custom base: Đặt là /san-pham/%product_cat%.

Cài đặt này sẽ thay thế slug product-category mặc định bằng san-pham, đồng thời tích hợp danh mục sản phẩm vào cấu trúc đường dẫn của trang Shop.

Cấu hình Permalink trong WordPress

2. Giải quyết lỗi 404 cho trang danh mục sản phẩm

Sau khi cấu hình trên, bạn có thể gặp lỗi 404 cho các trang danh mục sản phẩm. Điều này xảy ra vì WordPress cần được “dạy” cách nhận diện và xử lý cấu trúc URL mới này. Đoạn mã PHP sau đây được chèn vào file functions.php của theme đang sử dụng để khắc phục vấn đề này:

function devvn_product_category_base_same_shop_base( $flash = false ){
    $terms = get_terms(array(
        'taxonomy' => 'product_cat',
        'post_type' => 'product',
        'hide_empty' => false,
    ));
    if ($terms && !is_wp_error($terms)) {
        $siteurl = esc_url(home_url('/'));
        foreach ($terms as $term) {
            $term_slug = $term->slug;
            $baseterm = str_replace($siteurl, '', get_term_link($term->term_id, 'product_cat'));
            add_rewrite_rule($baseterm . '?$', 'index.php?product_cat=' . $term_slug,'top');
            add_rewrite_rule($baseterm . 'page/([0-9]{1,})/?$', 'index.php?product_cat=' . $term_slug . '&paged=$matches[1]','top');
            add_rewrite_rule($baseterm . '(?:feed/)?(feed|rdf|rss|rss2|atom)/?$', 'index.php?product_cat=' . $term_slug . '&feed=$matches[1]','top');
        }
    }
    if ($flash == true)
        flush_rewrite_rules(false);
}
add_filter( 'init', 'devvn_product_category_base_same_shop_base');
add_action( 'create_term', 'devvn_product_cat_same_shop_edit_success', 10, 2 );
function devvn_product_cat_same_shop_edit_success( $term_id, $taxonomy ) {
    devvn_product_category_base_same_shop_base(true);
}
  • add_rewrite_rule(): Hàm này là cốt lõi của giải pháp. Nó đăng ký các quy tắc viết lại URL tùy chỉnh vào hệ thống WordPress. Cụ thể, nó thông báo cho WordPress rằng khi gặp một URL có dạng /san-pham/ten-danh-muc, hãy xử lý nó như một truy vấn đến trang danh mục sản phẩm với slug tương ứng (index.php?product_cat=ten-danh-muc).
  • get_terms()get_term_link(): Đoạn code này tự động lặp qua tất cả các danh mục sản phẩm hiện có và tạo ra các quy tắc viết lại riêng biệt cho từng danh mục. Điều này đảm bảo tính linh hoạt và khả năng mở rộng khi bạn thêm mới hoặc chỉnh sửa danh mục.
  • flush_rewrite_rules(false): Hàm này cập nhật lại các quy tắc viết lại của WordPress. Việc gọi nó sau khi thêm code và đặc biệt là sau khi tạo danh mục mới là cực kỳ quan trọng để các thay đổi có hiệu lực và tránh lỗi 404.
  • create_term hook: Đảm bảo rằng mỗi khi một danh mục sản phẩm mới được tạo, các quy tắc viết lại sẽ được làm mới, ngăn ngừa lỗi 404 cho các danh mục mới ngay từ đầu.

3. Hỗ trợ đa ngôn ngữ với WPML

Đối với các website đa ngôn ngữ sử dụng WPML, việc cấu hình permalink trở nên phức tạp hơn do mỗi ngôn ngữ có thể có các slug riêng. Đoạn mã nâng cao sau đây giải quyết vấn đề này bằng cách chuyển đổi ngôn ngữ tạm thời để tạo các quy tắc viết lại chính xác cho từng phiên bản ngôn ngữ:

/* Author levantoan.com - Support WPML*/
function devvn_product_category_base_same_shop_base( $flash = false ){
    global $sitepress;
    $languages = icl_get_languages('skip_missing=0&orderby=code');
    if($languages && !empty($languages)){
        $original_lang = ICL_LANGUAGE_CODE;
        foreach($languages as $key=>$lang) {
            $new_lang = $key;
            $sitepress->switch_lang($new_lang);
            $terms = get_terms(array(
                'taxonomy' => 'product_cat',
                'post_type' => 'product',
                'hide_empty' => false,
            ));
            if ($terms && !is_wp_error($terms)) {
                $siteurl = apply_filters( 'wpml_home_url', get_home_url('/'));
                $siteurl = ($sitepress->get_default_language() == $key) ? $siteurl.'/' : $siteurl;
                foreach ($terms as $term) {
                    $term_slug = $term->slug;
                    $baseterm = str_replace($siteurl, '', get_term_link($term->term_id, 'product_cat'));
                    add_rewrite_rule($baseterm . '?$', 'index.php?product_cat=' . $term_slug, 'top');
                    add_rewrite_rule($baseterm . 'page/([0-9]{1,})/?$', 'index.php?product_cat=' . $term_slug . '&paged=$matches[1]', 'top');
                    add_rewrite_rule($baseterm . '(?:feed/)?(feed|rdf|rss|rss2|atom)/?$', 'index.php?product_cat=' . $term_slug . '&feed=$matches[1]', 'top');
                }
            }
            $sitepress->switch_lang($original_lang);
        }
    }
    if ($flash == true)
        flush_rewrite_rules(false);
}
add_filter( 'init', 'devvn_product_category_base_same_shop_base');
add_action( 'create_term', 'devvn_product_cat_same_shop_edit_success', 10, 2 );
function devvn_product_cat_same_shop_edit_success( $term_id, $taxonomy ) {
    devvn_product_category_base_same_shop_base(true);
}
  • $sitepress->switch_lang($new_lang): Đây là điểm mấu chốt. Code sẽ lặp qua từng ngôn ngữ được cấu hình trong WPML, tạm thời chuyển đổi ngôn ngữ để get_term_link() và các hàm liên quan trả về đường dẫn chính xác cho từng ngôn ngữ.
  • apply_filters( 'wpml_home_url', get_home_url('/') ): Đảm bảo rằng URL gốc của trang web được lấy một cách chính xác, có tính đến cấu hình URL của WPML (ví dụ, /en/ cho tiếng Anh).

Kết luận

Việc đồng bộ hóa đường dẫn trang sản phẩm và danh mục trong WooCommerce không chỉ là một thủ thuật cấu hình đơn giản mà là một chiến lược tối ưu hóa toàn diện. Nó cải thiện đáng kể khả năng tìm kiếm của trang web trên các công cụ như Google, mang lại trải nghiệm điều hướng mượt mà cho người dùng, và tạo nên một cấu trúc website chuyên nghiệp, dễ quản lý. Bằng cách hiểu rõ “tại sao” và “cách thức” hoạt động của các quy tắc viết lại URL, bạn có thể tự tin áp dụng và duy trì một hệ thống permalink hiệu quả cho website WooCommerce của mình. Hãy luôn nhớ làm mới các quy tắc permalink sau bất kỳ thay đổi lớn nào trong cấu trúc danh mục để đảm bảo mọi thứ hoạt động trơn tru.

Các câu hỏi thường gặp (FAQ)

Đồng bộ hóa đường dẫn sản phẩm và danh mục trong WooCommerce mang lại lợi ích gì?
Việc này giúp cải thiện SEO, nâng cao trải nghiệm người dùng (UX)tăng tính chuyên nghiệp cho website.
Tại sao đường dẫn ngắn gọn và nhất quán lại quan trọng với SEO?
Đường dẫn ngắn gọn, chứa từ khóa chínhkhông bị lặp từ khóa giúp công cụ tìm kiếm dễ hiểu cấu trúc trang web, tránh tình trạng “keyword cannibalization”.
Cấu trúc URL được đề xuất trong bài viết là gì?
Cấu trúc URL được đề xuất là: your-domain.com/san-pham/ten-danh-muc.
Cần làm gì đầu tiên để cấu hình đường dẫn sản phẩm và danh mục?
Bạn cần tạo một trang WordPress mới làm trang Shop với slug ngắn gọn (ví dụ: san-pham) và thiết lập trang này trong cài đặt WooCommerce.
Cấu hình Permalinks trong WordPress như thế nào để đồng bộ hóa?
Đặt Product category basesan-phamCustom base/san-pham/%product_cat%.
Lỗi 404 cho trang danh mục sản phẩm sau khi cấu hình xảy ra do đâu?
Lỗi 404 xảy ra vì WordPress chưa nhận diện và xử lý được cấu trúc URL mới này.
Hàm add_rewrite_rule() có vai trò gì trong việc khắc phục lỗi 404?
Hàm này đăng ký các quy tắc viết lại URL tùy chỉnh, thông báo cho WordPress cách xử lý các URL có dạng /san-pham/ten-danh-muc.
Tại sao cần sử dụng get_terms() và get_term_link() trong đoạn mã PHP?
Đoạn code này tự động lặp qua tất cả các danh mục sản phẩm và tạo quy tắc viết lại riêng cho từng danh mục, đảm bảo tính linh hoạt và khả năng mở rộng.
Khi nào cần gọi hàm flush_rewrite_rules(false)?
Cần gọi hàm này sau khi thêm codeđặc biệt là sau khi tạo hoặc chỉnh sửa danh mục mới để các thay đổi có hiệu lực.
Hook create_term có tác dụng gì?
Hook này đảm bảo rằng mỗi khi một danh mục sản phẩm mới được tạo, các quy tắc viết lại sẽ được làm mới, ngăn ngừa lỗi 404 cho các danh mục mới.
Làm thế nào để hỗ trợ đa ngôn ngữ cho permalink trên website WooCommerce sử dụng WPML?
Sử dụng đoạn mã nâng cao có chức năng chuyển đổi ngôn ngữ tạm thời ($sitepress->switch_lang()) để tạo các quy tắc viết lại chính xác cho từng phiên bản ngôn ngữ.
Việc đồng bộ hóa đường dẫn có tác động như thế nào đến khả năng tìm kiếm của trang web trên Google?
cải thiện đáng kể khả năng tìm kiếm của trang web trên các công cụ tìm kiếm như Google.
Nên làm gì sau bất kỳ thay đổi lớn nào trong cấu trúc danh mục?
Luôn nhớ làm mới các quy tắc permalink để đảm bảo mọi thứ hoạt động trơn tru.
Đánh giá ngay!
(0 lượt đánh giá - 0/5)
Cao Thiên
Là một người đam mê công nghệ AI, tôi sáng lập Tips AI Tech để chia sẻ kiến thức và xu hướng mới nhất, giúp mọi người dễ dàng tiếp cận và ứng dụng AI vào cuộc sống.