3 đoạn code cần phải có để link chuẩn SEO cho web wordpress



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ặt đị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 mặt định:

  • Tốc độ chắc chắn chậm hơn bên link măt đị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ặt đị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 nhé! 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

// 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

/*
* 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

/*
* 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);
}

Lời cuối cùng sau khi thêm đoạn code trên các bạn nhớ vào admin web phần “Cài đặt>Đường dẫn tĩnh”  chỉnh lại các link như ghi chú và lưu lại nhé!

Sau khi lưu thì lần lược 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. Các bạn cần dùng “chuyển hướng link” cho các link mới nhé!

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.

 

0 0 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x