Close

Remove category-product in Woocommerce

11 / 100

Add this into your theme or child theme into functions.php

/**
* Remove product category
*/
add_filter('request', 'wrg_remove_category_slug');
add_filter('term_link', 'wrg_term_link_filter', 999, 3);

function wrg_remove_category_slug($vars) {
global $wpdb;
if (!empty($vars['pagename']) || !empty($vars['category_name']) || !empty($vars['name']) || !empty($vars['attachment'])) {

$slug = !empty($vars['pagename']) ? $vars['pagename'] : (!empty($vars['name']) ? $vars['name'] : (!empty($vars['category_name']) ? $vars['category_name'] : $vars['attachment']));
$exists = $wpdb-> get_var($wpdb-> prepare("SELECT t.term_id FROM $wpdb->terms t LEFT JOIN $wpdb->term_taxonomy tt ON tt.term_id = t.term_id WHERE tt.taxonomy = 'product_cat' AND t.slug = %s", array($slug)));

if ($exists) {
$old_vars = $vars;
$vars = array('product_cat' => $slug);
if (!empty($old_vars['paged']) || !empty($old_vars['page'])) $vars['paged'] = !empty($old_vars['paged']) ? $old_vars['paged'] : $old_vars['page'];
if (!empty($old_vars['orderby'])) $vars['orderby'] = $old_vars['orderby'];
if (!empty($old_vars['order'])) $vars['order'] = $old_vars['order'];
}
}
return $vars;
}

function wrg_term_link_filter($url, $term, $taxonomy) {
$url = str_replace("/product-category/", "/", $url);
return $url;
}