Xóa bỏ product-category và toàn bộ slug của danh mục cha khỏi đường dẫn của Woocommerce

0
1180

hôm nay mình sẽ hướng dẫn các bạn cách xóa bỏ product-category đồng thời bỏ toàn bộ slug của danh mục cha ra khỏi đường dẫn tĩnh

Mặc định chúng ta có

Danh mục sản phẩm: http://domain.com/product-category/may-tinh
Danh mục con cấp 1: http://domain.com/product-category/may-tinh/may-tinh-de-ban
Danh mục con cấp 2: http://domain.com/product-category/may-tinh/may-tinh-de-ban/may-tinh-dell

Sau khi áp dụng đoạn code này chúng ta có:

Danh mục sản phẩm: http://domain.com/may-tinh
Danh mục con cấp 1: http://domain.com/may-tinh-de-ban
Danh mục con cấp 2: http://domain.com/may-tinh-dell

Code xóa bỏ product-category và bỏ toàn bộ slug của danh mục cha ra khỏi đường dẫn tĩnh

Chỉ cần cho đoạn code sau vào file functions.php của theme đang sử dụng. Sau đó vào update lại permalink tại Setting->Permalink->Save Change.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// Remove product cat base
add_filter('term_link', 'devvn_no_term_parents', 1000, 3);
function devvn_no_term_parents($url, $term, $taxonomy) {
    if($taxonomy == 'product_cat'){
        $term_nicename = $term->slug;
        $url = trailingslashit(get_option( 'home' )) . user_trailingslashit( $term_nicename, 'category' );
    }
    return $url;
}
// Add our custom product cat rewrite rules
function devvn_no_product_cat_parents_rewrite_rules($flash = false) {
    $terms = get_terms( array(
        'taxonomy' => 'product_cat',
        'post_type' => 'product',
        'hide_empty' => false,
    ));
    if($terms && !is_wp_error($terms)){
        foreach ($terms as $term){
            $term_slug = $term->slug;
            add_rewrite_rule($term_slug.'/?$', 'index.php?product_cat='.$term_slug,'top');
            add_rewrite_rule($term_slug.'/page/([0-9]{1,})/?$', 'index.php?product_cat='.$term_slug.'&paged=$matches[1]','top');
            add_rewrite_rule($term_slug.'/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$', 'index.php?product_cat='.$term_slug.'&feed=$matches[1]','top');
        }
    }
    if ($flash == true)
        flush_rewrite_rules(false);
}
add_action('init', 'devvn_no_product_cat_parents_rewrite_rules');
/*Sửa lỗi khi tạo mới taxomony bị 404*/
add_action( 'create_term', 'devvn_new_product_cat_edit_success', 10);
add_action( 'edit_terms', 'devvn_new_product_cat_edit_success', 10);
add_action( 'delete_term', 'devvn_new_product_cat_edit_success', 10);
function devvn_new_product_cat_edit_success( ) {
    devvn_no_product_cat_parents_rewrite_rules(true);

Chú ý:

– Nhiều bạn không biết nhiều code thì copy đoạn code trên cho xuống cuối cùng file functions.php trong theme mà bạn đang dùng. Trước thẻ đóng ?> nếu có nhé. Không đến lúc lỗi 500 hay trang trắng lại không biết tại sao ?
– Khi các bạn đã làm đường dẫn tính của danh mục sản phẩm về dạng này thì chú ý các link của bài viết hoặc page nhé. Nếu bị trùng slug thì sẽ dẫn đến sai đó ạ ? điều này là tất nhiên rồi… Đều là chữ A không thể bắt mình đọc là chữ B được ạ

Chú ý quan trọng:

Nếu website của các bạn đã chạy 1 thời gian trước đây rồi. Và đã được google index link của danh mục sản phẩm rồi mà bây giờ muốn chuyển sang dạng url rút gọn này và không muốn mất đi thứ dạng google thì hãy comment bên dưới. Mình sẽ giúp các bạn giải quyết vấn đề đó (Không free nhé)

Chúc các bạn SEO lên top ? không hiểu chỗ nào hoặc lỗi thì comment bên dưới mình giải đáp nhé