Remove The Category Base From WordPress

wordpress-logo-notext-rgbI am setting wordpress 2.8.4 for my client. Actually I don’t want CATEGORY base like(www.mysite.com/category/something/) in my new site as SEO issue. So, I want to remove category from wordpress categories. I want my address to be like this(www.mysite.com/something/). I search lot on internet and finally I come up with this final trick, which is easy to do and don’t need any plugin . This is simply a twik in wordpress admin file. This twik work with Next page issue as well like (www.mysite.com/something/page/2/). You just need to add some line of code in admin file.

Here is what I did and I’ve fooled around with mine enough to where I think it works right. First some caveats:

1)  I didn’t change any code inside the theme so this shouldn’t matter.

2) I don’t use subcategories so I don’t know if that works or not.

3) My permalink structure is set at /%category%/%postname%/ – if yours is different, you’ll probably need to tweak it, or it may work for you as well.

4) This isn’t a plugin (yet, I might get around to doing that but I have never written a plugin before and I wanted to get this out now). This means when you upgrade WordPress, you have to insert the code again.

So, here is the solution.

1) In wp-includes/category-template.php search for the following line of code:

$catlink = get_option('home') . user_trailingslashit($catlink, 'category');

Just below that, insert the following:

$catlink = str_replace('/category', "", $catlink);

2) In wp-includes/classes.php search for the following block of code:

if ( isset($error) )
$this->query_vars['error'] = $error;

Just below that, insert the following:

if (@$this->query_vars["name"] == "page")
{
$tmp_ar = $this->query_vars;
$this->query_vars = array();
$this->query_vars["paged"] = str_replace("/", "", $tmp_ar["page"]);
$this->query_vars["category_name"] = $tmp_ar["category_name"];
}

3) Finally, in your .htacces file, add the following to redirect your old /category/ URLs to your new ones (if your blog doesn’t reside in the root, you’ll have to tweak it):

RewriteRule ^category/(.+)$ http://www.domain.com/$1 [R=301,L]

If you do same as here, then I’m sure you will rock.

I have tried this on latest wordpress 2.8.4
Now back to setting up your nice blog 🙂


8 Comments

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.