- shares
- Facebook Messenger
- Gmail
- Viber
- Skype
Trong bài này, mình sẽ chỉ cho bạn cách loại bỏ từ «category»
từ URL danh mục trong WordPress.
làm thế nào để loại bỏ «tag»
từ trang thẻ bài viết.
và làm thế nào để xóa tên URL slug taxonomy ( «product_cat») từ các URL:
Sử dụng đoạn mã dưới đây , bạn có thể chèn vào giao diện hiện tại trong filefunctions.php
, và đừng quên thay đổi tên taxonomy của bạn.
add_filter('request', 'rudr_change_term_request', 1, 1 ); function rudr_change_term_request($query){ $tax_name = 'product_cat'; // specify you taxonomy name here, it can be also 'category' or 'post_tag' // Request for child terms differs, we should make an additional check if( $query['attachment'] ) : $include_children = true; $name = $query['attachment']; else: $include_children = false; $name = $query['name']; endif; $term = get_term_by('slug', $name, $tax_name); // get the current term to make sure it exists if (isset($name) && $term && !is_wp_error($term)): // check it here if( $include_children ) { unset($query['attachment']); $parent = $term->parent; while( $parent ) { $parent_term = get_term( $parent, $tax_name); $name = $parent_term->slug . '/' . $name; $parent = $parent_term->parent; } } else { unset($query['name']); } switch( $tax_name ): case 'category':{ $query['category_name'] = $name; // for categories break; } case 'post_tag':{ $query['tag'] = $name; // for post tags break; } default:{ $query[$tax_name] = $name; // for another taxonomies break; } endswitch; endif; return $query; } add_filter( 'term_link', 'rudr_term_permalink', 10, 3 ); function rudr_term_permalink( $url, $term, $taxonomy ){ $taxonomy_name = 'product_cat'; // your taxonomy name here $taxonomy_slug = 'product_cat'; // the taxonomy slug can be different with the taxonomy name (like 'post_tag' and 'tag' ) // exit the function if taxonomy slug is not in URL if ( strpos($url, $taxonomy_slug) === FALSE || $taxonomy != $taxonomy_name ) return $url; $url = str_replace('/' . $taxonomy_slug, '', $url); return $url; }
Lưu ý: sau đó bạn sẽ cần thực hiện chuyển hướng 301 cho URL cũ, điều này là rất cần thiết để dữ thứ hạng SEO cho trang web của bạn.
add_action('template_redirect', 'rudr_old_term_redirect'); function rudr_old_term_redirect() { $taxonomy_name = 'product_cat'; $taxonomy_slug = 'product_cat'; // exit the redirect function if taxonomy slug is not in URL if( strpos( $_SERVER['REQUEST_URI'], $taxonomy_slug ) === FALSE) return; if( ( is_category() && $taxonomy_name=='category' ) || ( is_tag() && $taxonomy_name=='post_tag' ) || is_tax( $taxonomy_name ) ) : wp_redirect( site_url( str_replace($taxonomy_slug, '', $_SERVER['REQUEST_URI']) ), 301 ); exit(); endif; }
Đoạn mã này thậm trí đã được thử nghiệm với dữ liệu taxonomy có phân cấp đa tầng phức tạp và hoạt động khá OK với cấu trúc permalink như hình dưới.
Hãy cho mình biết suy nghĩ của bạn trong phần bình luận bên dưới bài viết này. Hãy theo dõi kênh chia sẻ kiến thức WordPress của Hoangweb trên Twitter và Facebook
- shares
- Facebook Messenger
- Gmail
- Viber
- Skype