新闻中心

使用非插件的模式实现去除wordpress文章链接中的category字样

作者 / 无忧主机 时间 2016-10-29 01:38:14

无忧主机小编在工作的时候有很多无忧主机的独立ip虚拟主机用户就来咨询“去除链接中category”,这个去除的原因对优化方面还是比较有好处的,原因是对于seo优化来说目录的层次的越简单,那么蜘蛛就越喜欢,主要的是减少了对服务器减少了不少的压力,那么这个是很多实用wordpress源码程序的站长朋友都是喜欢去做的一个事情,之前官网上有实用插件的方式进行实现去除的功能,但是小编认为实用插件的实现的方式还是对主机的压力还是有不容小觑的,所以今天无忧主机小编给大家带来的福利就是使用非插件实现去除链接中category,要使用非插件其实是非常的简单的,下面就跟着小编一起来看看吧。 首先是进入到的是我们的主机管理---控制面板--文件管理,然后找到根目录,进入到程序的主题目录,目录是:/wp-content/themes/主题/functions.php ,如图1所示: 使用非插件的模式实现去除wordpress文章链接中的category字样 然后在这个文件,点击编辑,然后在?>的前面加入以下代码:

/* 
*wordpress使用非插件实现去除链接中category字样
*/
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(); 
} 
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)// 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]'; 
} 
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; 
}
加入如上代码之后,保存即可,然后访问我们的每个链接的时候发现category没有了。这个操作也可以在wordpress的后台直接就可以操作的,然后保存之后再次回到固定链接这里连续保存两次,即可实现这样的功能,该方法兼容wordpress最新版本。 温馨提示:该技术解决方案的是由无忧主机客服为我们空间客户处理该问题时提供的处理方法,确保在无忧主机能完美实现,因服务较多,客服繁忙,其他主机我们没有过多精力进行大范围测试,不能确保所有虚拟主机都能完美处理,请您理解!
无忧主机提供365天*24小时全年全天无休、实时在线、零等待的售后技术支持。竭力为您免费处理您在使用无忧主机过程中所遇到的一切问题! 如果您是无忧主机用户,那么您可以通过企业QQ【800088151】、售后QQ【网站最下端有】、旺旺【锋讯企业】、400-655-0080免费电话、后台提交工单这些方式联系无忧主机客服! 如果您不是我们的客户也没问题,点击页面最右边的企业QQ在线咨询图标联系我们并购买后,我们为您免费进行无缝搬家服务,让您享受网站零访问延迟的迁移到无忧主机的服务! 无忧主机相关文章推荐阅读: WORDPRESS搜索关键词只局限在文章标题的设置技巧 WORDPRESS教程实现搜索结果排除指定文章或页面的详细设置方法 WORDPRESS修改主题文件一定时间后自动关闭评论的方法

本文地址:https://www.51php.com/wordpress/23834.html

1
1
1
1
1
1
1

客户服务热线

0791-8623-3537

在线客服