最新消息:

WordPress 去除 category

使用 WordPress 建站的小伙伴们应该都知道,当你第一次用 WordPress 建站时,网站的固定链接中会有 /category/ 这样的目录出现,对于完美主义来说,这个很碍眼。你可以用 WP No Category Base 这款插件来去除,也可以使用本文的代码来实现。

复制以下代码到当前使用主题的 functions.php 文件中即可。

/*
 功能描述: 去除 category
 功能介绍页面: https://www.ivicos.com/45.html
*/
if( !function_exists('no_category_base_refresh_rules') ) {
 register_activation_hook(__FILE__, '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');
 no_category_base_refresh_rules();
 }
 add_action('init', 'no_category_base_permastruct');
 function no_category_base_permastruct() {
 global $wp_rewrite, $wp_version;
 if (version_compare($wp_version, '3.4', '<')) {
 $wp_rewrite -> extra_permastructs['category'][0] = '%category%';
 }
 else {
 $wp_rewrite -> extra_permastructs['category']['struct'] = '%category%';
 }
 }
 add_filter('category_rewrite_rules', 'no_category_base_rewrite_rules');
 function no_category_base_rewrite_rules($category_rewrite) {
 $category_rewrite = array();
 $categories = get_categories(array('hide_empty' => false));
 foreach ($categories as $category) {
 $category_nicename = $category -> slug;
 if ($category -> parent == $category -> cat_ID) $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]';
 }
 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]';
 return $category_rewrite;
 }
 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;
 }
 add_filter('request', 'no_category_base_request');
 function no_category_base_request($query_vars) {
 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;
 }
}

好了,Wordpress 去除 category 这个方法就分享到这里,非常感谢你的来访。如果你很喜欢本站,请不要忘记收藏本站,以便下次继续访问;也可以 关注站长微博 随时获取最新动态。你的支持就是我最大的动力!

转载请注明:爱维科斯 » WordPress 去除 category

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者