CẤU TRÚC LINK HIỆN TẠI CỦA WORDPRESS
Cấu trúc link chuẩn bài viết (post) danh mục bài viết (post archive) vốn đã được chuẩn hóa phân cấp như bên dưới:
- Link danh mục: https://codfe.com/category/danh-muc/
- Link bài viết: https://codfe.com/category/danh-muc/bai-viet
Tuy nhiên đối với dân SEO hoặc marketing kỹ tính việc dư thừa các ký tự các phần “/category/” rất không thân thiện và khó chịu. Tương tự khi bạn dùng woocommerce để quản lý sản phẩm, link (url) các sản phẩm cũng phân cấp như sau:
- Link danh mục sản phẩm: https://codfe.com/shop/danh-muc-san-pham/
- Link sản phẩm: https://codfe.com/shop/danh-muc-san-pham/ten-san-pham/
LINK ĐẸP CHUẨN SEO THEO TIÊU CHUẨN MR PERFECT
Đối với bài viết – post
- Link danh mục: https://codfe.com/ten-danh-muc/
- Link bài viết: https://codfe.com/ten-danh-muc/bai-viet
Đối với sản phẩm – product
- Link danh mục sản phẩm: https://codfe.com/danh-muc-san-pham/
- Link sản phẩm chi tiết: https://codfe.com/danh-muc-san-pham/ten-san-pham/
ƯU VÀ NHƯỢC ĐIỂM 2 CÁCH DÙNG “ĐƯỜNG DẪN TĨNH” (PERMANLINK)
Ưu điểm link mặc định wordress:
- Web sẽ chạy nhanh mượt hơn vì hệ thống link đã được tối ưu.
- Sự phân cấp rõ ràng, nhìn vào link sẽ dễ phân biệt đâu là danh mục, bài viết, danh mục sản phẩm và sản phẩm.
Nhược điểm link mặc định:
- Không thân thiện với khách hàng, dư các ký tự không cần thiết (tùy trường phái SEO)
- Link dài sẽ dễ bị … khi hiển thị lên kết quả google search
Ưu điểm link chuẩn SEO:
- Web sẽ thân thiện và link ngắn hơn
- Có nhiếu ký tự hơn cho ý đồ “nhồi” từ khóa 🙂
Nhược điểm link chuẩn SEO:
- Tốc độ chắc chắn chậm hơn bên link mặc định nhé, web càng lớn thì càng chậm.
- Phải quản lý việc trùng link bằng tay do có thể có link bài viết và sản phẩm trùng nhau.
Sau đây là 2 đoạn code giúp biến đổi link mặc định thành chuẩn SEO mà mình “chôm” của bác Toản nhé, sưu tầm lại cho anh em sử dụng.
3 đoạn code giúp link website wordpress chuẩn SEO
Code thêm vào function.php, trường hợp bạn chưa biết cách thêm thì xem thêm bài viết cách thêm code vào web wordpress nhé.
Code bỏ phần thừa trong post và post archive
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 |
// Remove Parent Category from Child Category URL add_filter('term_link', 'codfe_no_category_parents', 1000, 3); function codfe_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 codfe_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', 'codfe_no_category_parents_rewrite_rules'); /*Sửa lỗi khi tạo mới category bị 404*/ function devvn_new_category_edit_success() { codfe_no_category_parents_rewrite_rules(true); } add_action('created_category','codfe_new_category_edit_success'); add_action('edited_category','codfe_new_category_edit_success'); add_action('delete_category','codfe_new_category_edit_success'); |
Code bỏ phần product hoặc product-category trong sản phẩm wordpress xài woocommerce
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 42 43 44 45 46 47 48 49 50 51 52 53 |
/* * Code Bỏ /product/ hoặc /cua-hang/ hoặc /shop/ ... có hỗ trợ dạng %product_cat% * Thay /cua-hang/ bằng slug hiện tại của bạn */ function devvn_remove_slug( $post_link, $post ) { if ( !in_array( get_post_type($post), array( 'product' ) ) || 'publish' != $post->post_status ) { return $post_link; } if('product' == $post->post_type){ $post_link = str_replace( '/cua-hang/', '/', $post_link ); //Thay cua-hang bằng slug hiện tại của bạn }else{ $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link ); } return $post_link; } add_filter( 'post_type_link', 'devvn_remove_slug', 10, 2 ); /*Sửa lỗi 404 sau khi đã remove slug product hoặc cua-hang*/ function devvn_woo_product_rewrite_rules($flash = false) { global $wp_post_types, $wpdb; $siteLink = esc_url(home_url('/')); foreach ($wp_post_types as $type=>$custom_post) { if($type == 'product'){ if ($custom_post->_builtin == false) { $querystr = "SELECT {$wpdb->posts}.post_name, {$wpdb->posts}.ID FROM {$wpdb->posts} WHERE {$wpdb->posts}.post_status = 'publish' AND {$wpdb->posts}.post_type = '{$type}'"; $posts = $wpdb->get_results($querystr, OBJECT); foreach ($posts as $post) { $current_slug = get_permalink($post->ID); $base_product = str_replace($siteLink,'',$current_slug); add_rewrite_rule($base_product.'?$', "index.php?{$custom_post->query_var}={$post->post_name}", 'top'); add_rewrite_rule($base_product.'comment-page-([0-9]{1,})/?$', 'index.php?'.$custom_post->query_var.'='.$post->post_name.'&cpage=$matches[1]', 'top'); add_rewrite_rule($base_product.'(?:feed/)?(feed|rdf|rss|rss2|atom)/?$', 'index.php?'.$custom_post->query_var.'='.$post->post_name.'&feed=$matches[1]','top'); } } } } if ($flash == true) flush_rewrite_rules(false); } add_action('init', 'devvn_woo_product_rewrite_rules'); /*Fix lỗi khi tạo sản phẩm mới bị 404*/ function devvn_woo_new_product_post_save($post_id){ global $wp_post_types; $post_type = get_post_type($post_id); foreach ($wp_post_types as $type=>$custom_post) { if ($custom_post->_builtin == false && $type == $post_type) { devvn_woo_product_rewrite_rules(true); } } } add_action('wp_insert_post', 'devvn_woo_new_product_post_save'); |
Code loại bỏ chữ product-category trong đường dẫn
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 42 |
/* * Remove product-category in URL * Thay product-category bằng slug hiện tại của bạn. Mặc định là product-category */ add_filter( 'term_link', 'devvn_product_cat_permalink', 10, 3 ); function devvn_product_cat_permalink( $url, $term, $taxonomy ){ switch ($taxonomy): case 'product_cat': $taxonomy_slug = 'product-category'; //Thay bằng slug hiện tại của bạn. Mặc định là product-category if(strpos($url, $taxonomy_slug) === FALSE) break; $url = str_replace('/' . $taxonomy_slug, '', $url); break; endswitch; return $url; } // Add our custom product cat rewrite rules function devvn_product_category_rewrite_rules($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_action('init', 'devvn_product_category_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, 2 ); function devvn_new_product_cat_edit_success( $term_id, $taxonomy ) { devvn_product_category_rewrite_rules(true); } |
Sau khi lưu thì lần lượt kiểm tra các link lại xem đã hiển thị đúng như kết quả chưa! Lưu ý việc đổi link nên làm cho các web mới chưa index link vào google search, trường hợp đã index thì sẽ gây ra xáo trộn cho web. Để khắc phục các bạn cần dùng “chuyển hướng link” cho các link mới.
Chúc các bạn thành công! ý kiến góp ý xin comment bên dưới sẽ giúp mình xây dựng nội dung codfe ngày càng tốt hơn.