Không có tiêu đề

 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:



Cài đặt -> Đường dẫn tĩnh

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 13

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”:


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

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.

Mới hơn Cũ hơn