WP酷最近入手了一台阿里云云服务器,第一次进入后台要十几二十秒,按照其它博客的方法将插件和主题全部删了个遍。果不其然,插件的多少与后台的打开速度关系非常大。虽不能绝对地说只要减少插件就可让WordPress速度进一步提升,但如果能用代码的地方就用代码吧。今天要介绍的是No Category Base插件,百度貌似对三级目录的收录不喜,它的功能就是删除分类目录链接中那有些多余的/category/ 字样。若单单为了SBO而再多装一个插件实在不值,不如……把它集成到主题中?
加入该代码至主题文件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; }
正好换域名,用上了
似乎不行呀!
投诉一下,他妈的,俺有了那个no神马那个去除cat那个的插件,结果,一关闭那个,文章就无法访问,无语呀!
@静鹰 。。。win主机不说话了
@WP酷 不是win主机
@WP酷 你帮我看看是那的问题吗?![[可怜] [可怜]](http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/af/kl_org.gif)
@静鹰 解决了,但这个代码无法使用哦!使用就显示404了。
@静鹰 好的已收到~感谢反馈过段时间更新下
@WP酷 不客气,呵呵!![[呵呵] [呵呵]](http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/ac/smilea_org.gif)
@静鹰 关闭插件本来就是这样呢、那个No Category插件好霸道,安装了就不能卸,要卸载应该要卸载干净….
@静鹰 我刚刚也出现了,解决办法很简单,后台固定连接随便换一个保存后再换回自定义保存即可,否则停用后全部404!!!我擦
@张戈 涨知识了
这代码有用呢!也分享个。
@郭爱兵 不行,最新版的wordpress,代码无效了。
@静鹰 有效
@WP酷 =-=||你访问下我的就明白了
@WP酷 我的不行,添加以后,分类目录就404了
@静鹰 是因为你用了WP No Category Base插件,你没卸载干净
@郭爱兵 直接关闭不行吗?
@静鹰 肯定不行、我试过了
@静鹰 你还是老老实实用插件吧![[嘻嘻] [嘻嘻]](http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/0b/tootha_org.gif)
@郭爱兵 http://xiaozi8013.byethost7.com/qt,新站也不行
@静鹰 你用个新站试试、没用过WP No Category Base插件的准行!我刚刚就试过了,去我站上刚刚也分享了个
@郭爱兵 http://xiaozi8013.byethost7.com/qt
新站也不行
@静鹰 可以访问啊
@郭爱兵 不是新站、要这个战没用过上面那个插件呢!
@静鹰 大学的主题啊?多少钱![[可爱] [可爱]](http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/14/tza_org.gif)
@郭爱兵 199,那个,目录不行,你qq是?qq聊
@静鹰 494505795
@郭爱兵 ok
以前的地址会失效吗
@Giuem 不会的,自动跳转
想问博主使用的代码高亮插件是什么?![[呵呵] [呵呵]](http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/ac/smilea_org.gif)
@看着你我高兴 http://www.mywpku.com/crayon-syntax-highlighter.html
加上去没有任何效果啊。。。还是以前那样啊
@南宫诸葛月 1要先设置固定链接为除第一种外的任意一个,2刷新缓存就能看到效果了
@WP酷 我现在的链接是类似于.net/mywenzheng/3224.html这样的链接 我需要把固定链接的地址改下 比如改为post_id 然后更新下缓存吗
@南宫诸葛月 ?这种地址是可以的啊……刷新缓存应该就行了
@WP酷 我现在固定链接改为post_id 后 链接是改了 但是之前百度收录的打开都是404 不行呢
@南宫诸葛月 那暂时没有办法了……应该只要分类目录的链接结构为*/category/xxx就行才对
4.2.3测试通过