WooCommerce- How to remove product & product-category from urls? (ok)

https://stackoverflow.com/questions/43447175/woocommerce-how-to-remove-product-product-category-from-urls

// Remove slug product-category
add_filter('request', function( $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;
});

Ask Questionarrow-up-rightAsked 5 years, 6 months agoModified 1 year, 1 month agoarrow-up-rightViewed 78k times9

I'm using WooCommerce on a WordPress and it adds product & product-category to the

URLs.

http://dev.unwaveringmedia.com/8dim/product-category/all-party-supplies/arrow-up-right http://dev.unwaveringmedia.com/8dim/product/14-snowman-serving-tray/arrow-up-right

I need to remove 'product' & 'product-category' from the URLs. Is there any way to modify the permalinks and remove them?

Sharearrow-up-rightEditarrow-up-rightFollowFlagedited Sep 7, 2020 at 6:55arrow-up-rightGeneral Grievance's user avatararrow-up-rightGeneral Grievancearrow-up-right4,3312424 gold badges2828 silver badges4343 bronze badgesasked Apr 17, 2017 at 7:30Bhagya Shree 's user avatararrow-up-rightBhagya Shreearrow-up-right9111 gold badge11 silver badge33 bronze badges

Add a commentarrow-up-right

6 Answers

Sorted by: Highest score (default) Trending (recent votes count more) Date modified (newest first) Date created (oldest first) 23

Yes. But Please read this article first https://docs.woocommerce.com/document/removing-product-product-category-or-shop-from-the-urls/arrow-up-right

You can change this by:

  1. you can change the permalinks in Settings > permalink > optional > Product category base= ./ (type ./ in Product category base).

  2. Be sure that you don’t have any page, post or attachment with the same name (slug) as the category page or they will collide and the code won’t work.

  3. Install and activate the plugin below: (For more info please see https://timersys.com/remove-product-category-slug-woocommerce/arrow-up-right)

`

enter image description herearrow-up-right

For more info please see https://timersys.com/remove-product-category-slug-woocommerce/arrow-up-right

Sharearrow-up-rightEditarrow-up-rightFollowFlaganswered May 14, 2017 at 11:21Shehroz Altaf's user avatararrow-up-rightShehroz Altafarrow-up-right60811 gold badge1010 silver badges1616 bronze badges

Add a commentarrow-up-rightReport this ad3

Noone mentioned how to remove /product/ so here it goes:

I've added priority since some themes/plugins can conflict with this rule, which happened to me.

Sharearrow-up-rightEditarrow-up-rightFollowFlaganswered Sep 5, 2021 at 7:13Goran Jakovljevic's user avatararrow-up-rightGoran Jakovljevicarrow-up-right2,49311 gold badge2626 silver badges2424 bronze badges

Add a commentarrow-up-right2

It wasn't working with pagination for me. Here is full code that's working.

This will add new rewrite rule that will paginate query.

Sharearrow-up-rightEditarrow-up-rightFollowFlaganswered Jan 21, 2020 at 15:08Alex's user avatararrow-up-rightAlexarrow-up-right2111 bronze badgeAdd a commentarrow-up-right1

Using Shehroz Altaf's trick does the job just (almost) perfectly.

Adding the following between the $slug and $exists declarations will make it work with sub-categories too.

Sharearrow-up-rightEditarrow-up-rightFollowFlagedited Mar 19, 2019 at 11:11arrow-up-rightAS Mackay's user avatararrow-up-rightAS Mackayarrow-up-right2,79399 gold badges1818 silver badges2525 bronze badgesanswered Mar 19, 2019 at 10:52Manu Garrido's user avatararrow-up-rightManu Garridoarrow-up-right1144 bronze badgesAdd a commentarrow-up-right1

You can use the following filter: woocommerce_register_post_type_product

Here is an example if you only want to remove /product/ but keep the category.

Then make sure to flush the permalinks by updating the permalinks in the Admin panel.

Keep in mind you will still see '/product/' in the permalink structure in the Admin Panel Permalinks, but it will not have an affect.

Sharearrow-up-rightEditarrow-up-rightFollowFlaganswered Oct 2, 2020 at 18:38ggedde's user avatararrow-up-rightggeddearrow-up-right54455 silver badges1111 bronze badges

Add a commentarrow-up-right0

Other solutions all failed for me, after some trial and error I came up with this solution...

  1. Install free 'WOO CATEGORY BASE PERMALINK FIXER' plugin from https://masterns-studio.com/code-factory/wordpress-plugin/woo-category-base/arrow-up-right

  2. Set Product Category Base Permalinks to : shop

  3. Set Custom Base Permalinks to : /shop/%product_cat%/

URLs will then look like

Seems to work fine for pagination and sub categories

Last updated