Odstranění rubriky z url

**WP No Category Base**
„http://wordpress.org/extend/plugins/wp-no-category-base/“:http://wordpress.org/extend/plugins/wp-no-category-base/
„http://wordpresssupplies.com/wordpress-plugins/no-category-base/“:http://wordpresssupplies.com/wordpress-plugins/no-category-base/

This plugin will completely remove the mandatory ‚Category Base‘ from your category permalinks ( e.g. myblog.com/category/my-category/ to myblog.com/my-category/ ).

Implementováno na tomto webu.

*Alternativa*

**No category parents**
„http://wordpress.org/extend/plugins/no-category-parents/“:http://wordpress.org/extend/plugins/no-category-parents/

This plugin will completely remove the mandatory ‚Category Base‘ and all the parents from your category permalinks (e.g. /category/parent-category/my-category/ to /my-category/).

Odstranění rubriky z URL lze dosáhnout i zápisem v souboru .htaccess:

/—code php
RewriteRule ^category/(.+)$ http://www.yourblog.com/$1 [R=301,L]
\—

Případně:

/—code php
// Remove category base
add_filter(‚category_link‘, ‚no_category_parents‘,1000,2);
function no_category_parents($catlink, $category_id) {
$category = &get_category( $category_id );
if ( is_wp_error( $category ) )
return $category;
$category_nicename = $category->slug;

$catlink = trailingslashit(get_option( ‚home‘ )) . user_trailingslashit( $category_nicename, ‚category‘ );
return $catlink;
}

// Add our custom category rewrite rules
add_filter(‚category_rewrite_rules‘, ‚no_category_parents_rewrite_rules‘);
function no_category_parents_rewrite_rules($category_rewrite) {
//print_r($category_rewrite); // For Debugging

$category_rewrite=array();
$categories=get_categories(array(‚hide_empty’=>false));
foreach($categories as $category) {
$category_nicename = $category->slug;
$category_rewrite[‚(‚.$category_nicename.‘)/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$‘] = ‚index.php?category_name=$matches[1]&feed=$matches[2]‘;
$category_rewrite[‚(‚.$category_nicename.‘)/page/?([0-9]{1,})/?$‘] = ‚index.php?category_name=$matches[1]&paged=$matches[2]‘;
$category_rewrite[‚(‚.$category_nicename.‘)/?$‘] = ‚index.php?category_name=$matches[1]‘;
}
// Redirect support from Old Category Base
global $wp_rewrite;
$old_base = $wp_rewrite->get_category_permastruct();
$old_base = str_replace( ‚%category%‘, ‚(.+)‘, $old_base );
$old_base = trim($old_base, ‚/‘);
$category_rewrite[$old_base.’$‘] = ‚index.php?category_redirect=$matches[1]‘;

//print_r($category_rewrite); // For Debugging
return $category_rewrite;
}

// Add ‚category_redirect‘ query variable
add_filter(‚query_vars‘, ‚no_category_parents_query_vars‘);
function no_category_parents_query_vars($public_query_vars) {
$public_query_vars[] = ‚category_redirect‘;
return $public_query_vars;
}
// Redirect if ‚category_redirect‘ is set
add_filter(‚request‘, ‚no_category_parents_request‘);
function no_category_parents_request($query_vars) {
//print_r($query_vars); // For Debugging
if(isset($query_vars[‚category_redirect‘])) {
$catlink = trailingslashit(get_option( ‚home‘ )) . user_trailingslashit( $query_vars[‚category_redirect‘], ‚category‘ );
status_header(301);
header(„Location: $catlink“);
exit();
}
return $query_vars;
}
\—

The RSS feeds, however, don’t seem to work with this shorter url, and still require the long-form url. (Not sure if there’s a fix for that.) Also, it doesn’t change the post permalink. It’s just the category permalink that changes. Paste the code below into your functions.php file.