07.Làm sao xóa bỏ những Slug không cần thiết trên URL trang web?

Hôm nay mình xin hướng dẫn các bạn các bỏ những Slug không cần thiết trên URL trang web.

Có 3 phần chính là:

1.Xóa bỏ slug danh-muc khi vào trang danh mục sản phẩm và Xóa bỏ slug san-pham khi vào trang sản phẩm chi tiết.

2.Xóa bỏ Slug Featured_item và featured_item_category khi vào trang Portfolio và Porfolio category

3.Xóa bỏ Slug category khi vào trang danh mục bài viết

Đối với phần 1 và 2, các bạn chỉ cần copy đoạn code tương ứng bỏ vào file Functions.php của themes đang sử dụng. Đối với các themes mua tại Web Madem Agency , Tên themes mặc định là web-khoi-nghiep.

Sau đây mình xin đi vào chi tiết từng phần:

1.Xóa bỏ slug danh-muc khi vào trang danh mục sản phẩm và Xóa bỏ slug san-pham khi vào trang sản phẩm chi tiết.

Đoạn code để xóa bỏ slug danh-muc khi vào trang danh mục sản phẩm:

/*
* Remove product-category in URL
* Thay danh-muc bằng slug hiện tại của bạn. Themes tại Web Madem Agency - Mặc định là danh-muc
*/
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 = 'danh-muc'; //Thay bằng slug hiện tại của bạn. Mặc định Của WKN là danh-muc
            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);
}

Đoạn code xỏa bỏ slug san-pham khi vào trang sản phẩm chi tiết.

/*
* Code Bỏ /san-pham/ hoặc ... có hỗ trợ dạng %product_cat%
*/
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( '/san-pham/', '/', $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');
                }
            }
        }
    }
    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');

2.Xóa bỏ Slug Featured_item và featured_item_category khi vào trang Portfolio và Porfolio category

Đoạn code bỏ Feature_item trong Slug Porfolio:

function ah_remove_custom_post_type_slug( $post_link, $post, $leavename ) {
 
    if ( ! in_array( $post->post_type, array( 'featured_item' ) ) || 'publish' != $post->post_status )
        return $post_link;
 
    $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link );
 
    return $post_link;
}
add_filter( 'post_type_link', 'ah_remove_custom_post_type_slug', 10, 3 );
 
function ah_parse_request_tricksy( $query ) {
    
    if ( ! $query->is_main_query() )
        return;
 
    if ( 2 != count( $query->query )
        || ! isset( $query->query['page'] ) )
        return;
 
    if ( ! empty( $query->query['name'] ) )
        $query->set( 'post_type', array( 'post', 'featured_item', 'page' ) );
}
add_action( 'pre_get_posts', 'ah_parse_request_tricksy' );

Đoạn code bỏ Feature_item_category trong slug danh mục Portfolio:

add_filter('request', 'rudr_change_term_request', 1, 1 );
 
function rudr_change_term_request($query){
 
    $tax_name = 'featured_item_category'; // 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 = 'featured_item_category'; // your taxonomy name here
    $taxonomy_slug = 'featured_item_category'; // 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;
}

3.Xóa bỏ Slug category khi vào trang danh mục bài viết:

Đối với các theme mua tại Web Madem Agency – đã có cài sẵn Yoast Seo – Các bạn chỉ cần bật tính năng Advanced của Yoast Seo lên và vào phần Permalink Chọn Remove category:

Vào phần tùy chỉnh Advanced -> Sau đó vào phần Permalink:

Tại đây ở phẩn Permalinks -> Chọn Remove /category/ để bỏ slug phần này ở mục danh mục bài viết

Sau khi hoàn tất các phần này, các bạn sẽ có một hệ thống link đơn giản và thân thiện cho Seo. Chúc các bạn thành công.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Bài viết liên quan

Array
TẠI SAO WEBSITE MỚI NÊN CHẠY GOOGLE ADS – BƯỚC ĐỆM CHẮC CHẮN CHO CHIẾN DỊCH LÂU DÀI
Câu Hỏi Thường Gặp, Đọc gì hôm nay, Tin tức, Tư Vấn SEO Top Google
GOOGLE ADWORDS LÀ GÌ VÀ NHỮNG KIẾN THỨC CƠ BẢN VỀ GOOGLE ADS
Bài viết nổi bật, Câu Hỏi Thường Gặp, Đọc gì hôm nay, Tin tức, Tư Vấn SEO Top Google
SO SÁNH GIỮA SEO WEBSITE VÀ GOOGLE ADWORDS – ĐÂU LÀ CHIẾN DỊCH ĐÚNG ĐẮN CHO CÁC DOANH NGHIỆP?
Câu Hỏi Thường Gặp, Đọc gì hôm nay, Tin tức, Tư Vấn SEO Top Google
LỢI ÍCH CỦA VIỆC LÀM SEO TRONG MARKETING
Câu Hỏi Thường Gặp, Đọc gì hôm nay, Tin tức, Tư Vấn SEO Top Google
SEO LÀ GÌ? TỔNG QUAN VỀ SEO TRONG DIGITAL MARKETING
Câu Hỏi Thường Gặp, Đọc gì hôm nay, Tin tức, Tư Vấn SEO Top Google
Vị trí
Gọi trực tiếp
Facebook
Zalo