Xóa category và slug category không cần Plugin
Một vấn đề mà người sử dụng website nền tảng WordPress luôn muốn loại bỏ để tối ưu đường liên kết của website là “xóa category và slug category” , theo tiếng việt là danh mục và danh mục con. Mặc định website wordpress lại hiện đường dẫn danh mục và danh mục con khá dài làm người người thấy khá rối và không cần thiết.
Nếu website bạn có nhiều hơn 2 cấp danh mục con thì đường liên kết của danh mục sẽ rất dài, chưa kể tiêu đề bài viết của bạn mà dài thoàng nữa thì nhìn cái link ( liên kết ) rất chán và rất không chuyên nghiệp.
Bài này mình chia sẻ cho các bạn đang tìm code xóa xóa category và slug category không cần plugin, hoặc dùng plugin Yoast seo hay rank math seo để xóa cái hiển thị danh mục trên đường liên kết ( xóa category khỏi liên kết danh mục và bài viết ).
1. Xóa category bằng plugin Rank Math Seo
Những plugin hỗ trợ SEO như Rank Math có tích hợp chức năng cho phép người dùng xóa hay ẩn cụm từ category ( danh mục ) cấp 1 khỏi đường liên kết, nhưng nếu bạn có thêm danh mục cấp 2 cấp 3 (Slug category ) và nhiều hơn thì plugin này không hỗ trợ.
Để xóa category bằng plugin Rank Math SEO bạn vào quản trị website vào tìm đến Rank Math SEO – General Settings. Ở tùy chọn General Settings bạn chọn tùy chọn link – tích vào chức năng Strip Category Base. Sau đó Save changes ( lưu lại) là xong. Như vậy là bạn đã tắt category trên đường liên kết danh mục hay bài viết của danh mục trên website.
2. Xóa category bằng plugin Yoast SEO.
Cũng như plugin hỗ trợ SEO trên thì Yoast SEO cũng chỉ hỗ trợ tính năng tắt category cấp 1, những Slug category ( danh mục con các cấp nhỏ hơn ) không thể tắt hay xóa bỏ bởi plugin này.
Để xóa category bằng Yoast SEo bạn vào quản trị website tìm đến Y SEO và tìm đến tùy chọn sau để tăt hay xóa category danh mục nhé, chú ý là hiện tại Yoast SEO cập nhật bản mới nên giao diện tùy chọn có khác biệt, các bạn nhỉn xem mình đang dùng bản cũ hay bản mới mà tìm chỗ cài đặt nhé.
- Với bản Yoast SEO cũ, trước tiên bạn vào SEO -> tab Features -> Chọn Enabled mục Advanced settings pages -> Save changes. Sau đó bạn tìm đến: SEO -> Advanced -> tab Permalinks -> Change URLs -> chọn Remove tại Strip the category base (usually /category/) from the category URL. Sau đó Save changes ( lưu lại) là xong.
- Với bản Yoast SEO mới nếu bạn dùng bản tiếng VIệt thì bạn tìm đến: SEO -> Hiển thị khi tìm kiếm -> Nguyên tắc phân loại -> Tìm đến mục đường dẫn danh mục và chọn gỡ bỏ. Sau đó bấm Lưu thay đổi là xong.
3. xóa category và slug category bằng code không cần plugin
Vì các plugin không hỗ trợ tính năng xóa slug category ( danh mục cấp 2, 3,4,5… ) nên mình tìm kiếm khắp cõi mạng, và cuối cùng cũng tìm được code xóa category và slug category không cần plugin để sử dụng và chia sẻ đến các bạn.
Code xóa category và slug category không cần plugin
// Remove Parent Category from Child Category URL
add_filter(‘term_link’, ‘devvn_no_category_parents’, 1000, 3);
function devvn_no_category_parents($url, $term, $taxonomy) {
if($taxonomy == ‘category’){
$term_nicename = $term->slug;
$url = trailingslashit(get_option( ‘home’ )) . user_trailingslashit( $term_nicename, ‘category’ );
}
return $url;
}
// Rewrite url mới
function devvn_no_category_parents_rewrite_rules($flash = false) {
$terms = get_terms( array(
‘taxonomy’ => ‘category’,
‘post_type’ => ‘post’,
‘hide_empty’ => false,
));
if($terms && !is_wp_error($terms)){
foreach ($terms as $term){
$term_slug = $term->slug;
add_rewrite_rule($term_slug.’/?$’, ‘index.php?category_name=’.$term_slug,’top’);
add_rewrite_rule($term_slug.’/page/([0-9]{1,})/?$’, ‘index.php?category_name=’.$term_slug.’&paged=$matches[1]’,’top’);
add_rewrite_rule($term_slug.’/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$’, ‘index.php?category_name=’.$term_slug.’&feed=$matches[1]’,’top’);
}
}
if ($flash == true)
flush_rewrite_rules(false);
}
add_action(‘init’, ‘devvn_no_category_parents_rewrite_rules’);
/*Sửa lỗi khi tạo mới category bị 404*/
function devvn_new_category_edit_success() {
devvn_no_category_parents_rewrite_rules(true);
}
add_action(‘created_category’,’devvn_new_category_edit_success’);
add_action(‘edited_category’,’devvn_new_category_edit_success’);
add_action(‘delete_category’,’devvn_new_category_edit_success’);
Với đoạn code này thì bạn chỉ cần sao chép và dán vào file functions.php trong theme đang sử dụng sau đó vào cập nhật lại đường dẫn tĩnh là xong (Settings -> Permalink -> Save change).
Lời kết: nếu bạn không có nhiều hơn 1 cấp danh mục thì dùng tính năng xóa category được tích hợp sẵn trên các plugin SEO là được rồi, nếu có nhiều cấp danh mục con hơn thì bạn dùng Code xóa category và slug category ở trên là chuẩn luôn. Chúc các bạn thành công.