Code loại bỏ category và slug category trong wordpress sản phẩm Woocommerce

Bạn muốn loại bỏ Catagory và slug catagory danh mục sản phẩm trong wordpress?

trước khi code:
ex: https://tamnguyen.vn/danh-muc-a/san-pham-a
ex: https://tamnguyen.vn/danh-muc-a/san-pham-b
ex: https://tamnguyen.vn/sanpham/hoa-yeu-thuong/san-pham-c
sau khi code
ex: https://tamnguyen.vn/san-pham-a
ex: https://tamnguyen.vn/san-pham-b
ex: https://tamnguyen.vn/san-pham-c

Hãy copy đoạn code sau vào file function.php để thực hiện nhé

Code bỏ category và slug category trong wordpress sản phẩm Woocommerce

function cdb_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( ‘/product/’, ‘/’, $post_link );
}else{
$post_link = str_replace( ‘/’ . $post->post_type . ‘/’, ‘/’, $post_link );
}
return $post_link;
}
add_filter( ‘post_type_link’, ‘cdb_remove_slug’, 10, 2 );
/*Sửa lỗi 404 sau khi đã remove slug product hoặc cua-hang*/
function cdb_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’, ‘cdb_woo_product_rewrite_rules’);
/*Fix lỗi khi tạo sản phẩm mới bị 404*/
function cdb_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) {
cdb_woo_product_rewrite_rules(true);
}
}
}
add_action(‘wp_insert_post’, ‘cdb_woo_new_product_post_save’);
/*xoa duong dan url*/
add_filter( ‘term_link’, ‘cdb_product_cat_permalink’, 10, 3 );
function cdb_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;
}
function cdb_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’, ‘cdb_product_category_rewrite_rules’);
add_action( ‘create_term’, ‘cdb_new_product_cat_edit_success’, 10, 2 );
function cdb_new_product_cat_edit_success( $term_id, $taxonomy ) {
cdb_product_category_rewrite_rules(true);
}

Một số lưu ý trong đoạn code trên

  • /product/ ở dòng số 6 ở code trên, là đường dẫn sản phẩm bạn thay cho đúng với hình bên dưới trong cài đặt của bạn
  • ‘product-category’ ở dòng 54 code ở trên là đường dẫn danh mục sản phẩm, bạn thay cho đúng với trong settings của bạn luôn nhé, thay sai là không hoạt động đâu mà lỗi nữa đó,
  • và thay đúng rồi thì nhớ bước update lại link như bài trên luôn nghen !
  • Lưu lại và xem kết quả nhé.

Code bỏ category và slug category trong wordpress tin tức

Các bạn bỏ đoạn code này vào function.php của theme là xong. nhớ đọc đoạn sau của code này nhé.

// Remove Parent Category from Child Category URL
add_filter(‘term_link’, ‘cdb_no_category_parents’, 1000, 3);
function cdb_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 cdb_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’, ‘cdb_no_category_parents_rewrite_rules’);
/*Sửa lỗi khi tạo mới category bị 404*/
function cdb_new_category_edit_success() {
cdb_no_category_parents_rewrite_rules(true);
}
add_action(‘created_category’,’cdb_new_category_edit_success’);
add_action(‘edited_category’,’cdb_new_category_edit_success’);
add_action(‘delete_category’,’cdb_new_category_edit_success’);

Lưu ý: sau khi bạn add code trên vào function xong thì hay update lại link nhé, không là lỗi 404 đó. nếu bạn không biết thì làm theo đường dẫn dưới nhé

cài đặt -> đường dẫn tĩnh -> lưu lại (tiếng việt)
settings - permalinks - update  ( đối với tiếng anh)
Chat hỗ trợ
Chat ngay