Hướng dẫn xóa san-pham , danh-muc-san-pham trong đường dẫn sản phẩm Woocommerce

Với mặc định của Woocommerce, chi tiết sản phẩm sẽ có dạng domain/san-pham/ten-san-pham và danh mục sản phẩm sẽ ở dạng domain/danh-muc-san-pham/ten-danh-muc. Một phần đường dẫn như vậy sẽ làm xấu và dài url, còn ảnh hưởng tới SEO thì không phải là trực tiếp. Tùy vào nhu cầu của người sử dụng, mình sẽ hướng dẫn người dùng bỏ 2 đoạn trên đi.

Loại bỏ /san-pham/ ra khỏi đường dẫn chi tiết sản phẩm

Mặc định của Woocommerce sẽ là /san-pham/ nhưng đôi khi website bạn setup lại khác, để kiểm tra bạn vào:

Hướng dẫn xóa san-pham , danh-muc-san-pham trong đường dẫn sản phẩm Woocommerce
Cài đặt -> Đường dẫn tĩnh
Hướng dẫn xóa san-pham , danh-muc-san-pham trong đường dẫn sản phẩm Woocommerce

Vậy là bạn xác định được đường dẫn url của chi tiết sản phẩm của bạn là gì, ở đây là san-pham.

Bạn copy đoạn ở đây vào file functions.php, nếu tùy biến đường dẫn của bạn không phải là san-pham, để dễ dàng bạn ctrl+f tìm san-pham thay thế bằng nội dung trong “Tùy biến đường dẫn” của bạn:

/*
* Code Bỏ /san-pham/ hoặc /cua-hang/ hoặc /shop/ hoặc /product/ ... có hỗ trợ dạng %product_cat%
* Thay /cua-hang/ bằng slug hiện tại của bạn
*/
function giniit_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', 'giniit_remove_slug', 10, 2 );
/*Sửa lỗi 404 sau khi đã remove slug product hoặc cua-hang*/
function giniit_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', 'giniit_woo_product_rewrite_rules');
/*Fix lỗi khi tạo sản phẩm mới bị 404*/
function giniit_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) {
            giniit_woo_product_rewrite_rules(true);
        }
    }
}
add_action('wp_insert_post', 'giniit_woo_new_product_post_save');

Note: Sau khi bạn cập nhật file functions.php, hãy vào Cài đặt -> Đường dẫn tĩnh ấn lưu thay đổi dể update url nhé. Nếu không bạn sẽ bị 404.

Hướng dẫn xóa san-pham , danh-muc-san-pham trong đường dẫn sản phẩm Woocommerce
Hướng dẫn xóa san-pham , danh-muc-san-pham trong đường dẫn sản phẩm Woocommerce 13

Kết quả: https://giniwebseo.vn/plugin-schema-cho-toi-uu-seo-cho-wordpress-1-4-1/

Loại bỏ /danh-muc-san-pham/ ra khỏi đường dẫn danh mục sản phẩm

Tương tự chi tiết sản phẩm, các bạn cần xác định của các bạn có phải /danh-muc-san-pham/ hay không ở “Đường dẫn tĩnh”:

Hướng dẫn xóa san-pham , danh-muc-san-pham trong đường dẫn sản phẩm Woocommerce
Cài đặt -> Đường dẫn tĩnh
Hướng dẫn xóa san-pham , danh-muc-san-pham trong đường dẫn sản phẩm Woocommerce
Hướng dẫn xóa san-pham , danh-muc-san-pham trong đường dẫn sản phẩm Woocommerce 14

Bạn copy đoạn dưới đây vào functions.php là được, tương tự nếu không phải /danh-muc-san-pham/ thì các bạn cứ ctrl+f tìm và thay thế nhé:

/*
* Loại bỏ /danh-muc-san-pham/ ở đường dẫn
* Thay /danh-muc-san-pham/ slug hiện tại của bạn. Mặc định là /danh-muc-san-pham/
*/
add_filter( 'term_link', 'giniit_product_cat_permalink', 10, 3 );
function giniit_product_cat_permalink( $url, $term, $taxonomy ){
    switch ($taxonomy):
        case 'product_cat':
            $taxonomy_slug = 'danh-muc-san-pham'; //Thay bằng slug hiện tại của bạn. Mặc định là /danh-muc-san-pham/
            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 giniit_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', 'giniit_product_category_rewrite_rules');
/*Sửa lỗi khi tạo mới taxomony bị 404*/
add_action( 'create_term', 'giniit_new_product_cat_edit_success', 10, 2 );
function giniit_new_product_cat_edit_success( $term_id, $taxonomy ) {
    giniit_product_category_rewrite_rules(true);
}

Kết quả: https://giniwebseo.vn/wordpress-plugin/

Note: Sau khi bạn cập nhật file functions.php, hãy vào Cài đặt -> Đường dẫn tĩnh ấn lưu thay đổi dể update url nhé. Nếu không bạn sẽ bị 404.

Theo dõi
Thông báo của
guest
2 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
Nhi Hồng
Nhi Hồng
2 năm trước

Có loại bỏ phần tu-khoa-san-pham được không ạ.
https://hoaphatproducts.com/tu-khoa-san-pham/bat-che-nang-mua-cho-ban-cong/
giúp em với ạ

Hãy để Gini Webseo tư vấn cho bạn

    All in one