xxbb77
- 浏览: 3342 次
- 性别:
- 来自: 南京
-
社区版块
- ( 0)
- ( 0)
- ( 0)
最新评论
wordpress去除默认自带目录category的方法
- 博客分类:
- wordpress相关
如果你的是新站,可以考虑去掉这个category分类标志;如果你的是老站(也就是说搜索引擎已经收录了分类目录),个人建议不用折腾了;如果非要去掉,就一定要做一下分类链接目录的301重定向。
wordpress去掉链接category的两种办法:
方法一:插件法实现
wp no category base插件功能简单,作用就是去掉wordpress分类目录链接中category分类标志而已。我们可以直接后台安装,启用后也不需要任何设置就可以生效使用。
登录后台 > 插件 > 安装插件 > 搜索“wp no category base”,然后进行安装并启用即可。
方法二:纯代码实现
纯代码去掉wordpress分类目录链接中的category分类标志,也非常简单,只需要将以下代码放在主题文件functions.php文件最后一个?>前面即可。
第一步:打开“外观”下的“编辑”菜单;
第二部:在“主题文件”中找到“模板函数 (functions.php)”
第三部:在表中添加下面函数:
// 去掉链接中category分类标志 www.7760.cn
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] = 'tegory%';
} else {
$wp_rewrite -> extra_permastructs['category']['struct'] = 'tegory%';
}
}
// 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;
}
wordpress去掉链接category的两种办法:
方法一:插件法实现
wp no category base插件功能简单,作用就是去掉wordpress分类目录链接中category分类标志而已。我们可以直接后台安装,启用后也不需要任何设置就可以生效使用。
登录后台 > 插件 > 安装插件 > 搜索“wp no category base”,然后进行安装并启用即可。
方法二:纯代码实现
纯代码去掉wordpress分类目录链接中的category分类标志,也非常简单,只需要将以下代码放在主题文件functions.php文件最后一个?>前面即可。
第一步:打开“外观”下的“编辑”菜单;
第二部:在“主题文件”中找到“模板函数 (functions.php)”
第三部:在表中添加下面函数:
// 去掉链接中category分类标志 www.7760.cn
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] = 'tegory%';
} else {
$wp_rewrite -> extra_permastructs['category']['struct'] = 'tegory%';
}
}
// 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;
}
分享到:
相关推荐
博主们在使用wordpress搭建的网站时,可能会发现文章的url地址中默认都会带有category,url中带有category可能既影响用户体验,也不利于seo地址规范化,因此和大家分享一下去除url中category的方法。 首先登录到...
主要为大家介绍了wordpress修改评论默认头像的方法,可实现定制个性化的评论头像功能,非常具有实用价值,需要的朋友可以参考下
iis6.0 下 wordpress 去掉 index.php 和 category 的方法,需要的朋友可以参考下,下面又补充内容,大家多测试
主要介绍了wordpress如何去掉自带的logo或者左侧栏的菜单方法,需要的朋友可以参考下
1. 编写404.php 文件,上传保存到博客根目录(和wordpress 的 index.php 在同一个目录)。文件内容如下; 复制代码代码如下: <?php $qs = $_server[‘query_string’]; $pos = strrpos($qs, ‘://’); $pos = ...
10大wordpress百度seo优化增加收录的方法.docx10大wordpress百度seo优化增加收录的方法.docx10大wordpress百度seo优化增加收录的方法.docx10大wordpress百度seo优化增加收录的方法.docx10大wordpress百度seo优化增加...
8个wordpress seo优化方法.本文档是基础教程。高手直接跳过
wordpress官方百度分享插件!压缩包中包含使用方法
很多时候我们需要在给 wordpress 文章编辑器设置默认内容,比如把常用的开头或者文章注意事项放进去,本文就教你给 wordpress 编辑器设置默认内容。 /** *wordpress 给文章编辑器设置默认内容 *...
corepress是一款wordpress主题,适合个人网站,极客网站...新增默认开启文章目录:主题设置->文章设置->默认开启目录。设置以后,新建文章默认开启目录 环境要求 php版本5.6以上,并且开启了eval函数 推荐使用宝塔建站
本文档是wordpress主题制作的入门指导,详细分析了wordpress主题的每个文件,并对常用的函数使用参数做了详细的介绍。只要您具有基本的html及css知识,通过学习本文档就可以掌握wordpress主题的制作了 为了方便大家...
wordpress自动优化修复数据库方法
下载中文语言包,上传到 wp-content 目录。 打开wp-config.php(wordpress安装成功之后,会自动生成wp-config.php文件),找到: define ('wplang', ''); 更改成: define ('wplang', 'zh_cn'); 上传并覆盖空间里的wp-...
wordpress安装方法,这个方法本人亲身试过
wordpress默认的上传文件的目录是/wp-content/uploads,而且文件是以年月的形式组织的,虽然我们可以去掉按照年月组织的选项,或者更改存储路径,但这个设置会应用到全局,不能按照特定条件选择特定目录存储文件
主要为大家介绍了wordpress实现自带的侧边栏和自定义的侧边栏同时存在的方法,是wordpress二次开发中非常实用的技巧,需要的朋友可以参考下
category meta plugin是一款好用功能强大的插件,可以用于给分类、标签、自定义菜单、链接分类等添加自定义栏目,支持单行/多好文本框、多选框以及图片上传。
zf wordpress category accordion zf wordpress类手风琴" ---------- 泰森云每天更新发布最新wordpress主题、html主题、wordpress插件、shopify主题、opencart主题、php项目源码、安卓项目源码、ios项目源码,更有...
默认情况下,wordpress分类的永久链接是这样的比如本站的技术文章分类。 exehack.net/category/my-article/ 如果能把中间那段category去掉,是不是更美观切更利于seo优化呢: exehack.net/my-my-article/ 去除...