wordpress去除分类链接中的category

wordpress的默认分类链接中是带有/category/一个层级的,别的博客程序大多默认的分类链接都是带有category的,那么有些wordpress的博主想把分类链接中的category去掉,这个问题在zblog中很好解决,但在wordpress中似乎要用上点代码了,不然直接设置会出错的说。今天小众博客给wordpress的博友分享一下wordpress去掉分类链接中的category的方法。

加入该代码至主题文件functions.php

/*
*去除分类标志代码
*/
add_action( 'load-themes.php', 'no_category_base_refresh_rules'); 
add_action('created_category', 'no_category_base_refresh_rules'); 
add_action('edited_category', 'no_category_base_refresh_rules'); 
add_action('delete_category', 'no_category_base_refresh_rules'); 
function no_category_base_refresh_rules() { 
 global $wp_rewrite; 
 $wp_rewrite -> flush_rules(); 
}
// register_deactivation_hook(__FILE__, 'no_category_base_deactivate'); 
// function no_category_base_deactivate() { 
// remove_filter('category_rewrite_rules', 'no_category_base_rewrite_rules'); 
// // We don't want to insert our custom rules again 
// no_category_base_refresh_rules(); 
// } 
// Remove category base 
add_action('init', 'no_category_base_permastruct'); 
function no_category_base_permastruct() { 
 global $wp_rewrite, $wp_version; 
 if (version_compare($wp_version, '3.4', '<')) { 
 // For pre-3.4 support 
 $wp_rewrite -> extra_permastructs['category'][0] = '%category%'; 
 } else { 
 $wp_rewrite -> extra_permastructs['category']['struct'] = '%category%'; 
}
}
// Add our custom category rewrite rules 
add_filter('category_rewrite_rules', 'no_category_base_rewrite_rules'); 
function no_category_base_rewrite_rules($category_rewrite) { 
 //var_dump($category_rewrite); // For Debugging 
 $category_rewrite = array(); 
 $categories = get_categories(array('hide_empty' => false)); 
 foreach ($categories as $category) { 
 $category_nicename = $category -> slug; 
 if ($category -> parent == $category -> cat_ID)// recursive recursion 
 $category -> parent = 0; 
 elseif ($category -> parent != 0) 
 $category_nicename = get_category_parents($category -> parent, false, '/', true) . $category_nicename; 
 $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_category_base = get_option('category_base') ? get_option('category_base') : 'category'; 
 $old_category_base = trim($old_category_base, '/'); 
 $category_rewrite[$old_category_base . '/(.*)$'] = 'index.php?category_redirect=$matches[1]'; 
 //var_dump($category_rewrite); // For Debugging 
 return $category_rewrite; 
}
// Add 'category_redirect' query variable 
add_filter('query_vars', 'no_category_base_query_vars'); 
function no_category_base_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_base_request'); 
function no_category_base_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; 
}

代码整理自网络。

版权声明:本站部分文章为网络转载,文章结尾已注明出处,如侵犯您的权益请联系我们删除。

联系我们:turbochao@126.com

Google 为什么要吃掉自己