海外优质VPS
高性价比免备案主机推荐

如何去除WordPress固定链接URL的category方法

插件方案删除category的方法

WordPress设置伪静态(即后台——设置——固定链接,非默认)后,分类目录的URL结构会变成http://域名/category/目录别名,显然其中的category/很碍眼。前面介绍过两款插件 No category parents 和 wp-no-category-base 用于去掉伪静态后分类目录URL的category/部分,现在再介绍一款删除分类目录URL中category/的插件FV Top Level Categories。

插件介绍:

设置固定链接后,删除分类页面网址的category/前缀。

使用方法:

1、进入后台——插件——安装插件,搜索FV Top Level Categories进行安装(或进入WP官网下载)

2、安装成功后,无需要进行任何设置,进入后台——插件——已安装插件中启用该插件即可。

注意:该插件支持wordpress最低版本为 3.2.1

另外插件:

WP No Category Base

二次修改wordpress配置文件来解决

修改Wordpress函数,去掉分类前缀category

1、找到你Wordpress博客wp-includes文件夹下的category-template.php。

2、打开此文件,搜索(get_category_link()函数里):

$catlink = $wp_rewrite->get_category_permastruct();

在其后,另起一行加入:

$catlink = str_replace(‘/category’ , ” , $catlink);

代码作用是,使用字符串替换函数,把获取分类链接函数的分类链接里的/category替换掉。达到去掉分类链接前缀/category的目的。

3、保存上传到服务器即可。

通过修改代码来实现

复制下面的这段代码,直接扔进function.php里面就OK了。

/**
*WordPress 去除分类标志代码
*/
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;
}

不管安装插件或用代码可能会出现404页面,即%post_id%.html(本站设置的固定链接)的伪静态失效了!

解决方法:可以登录后台→设置→固定链接设置页面,随意改一下固定链接格式,然后再改回自己正常用的固定链接格式,可以消除这个错误,不行就反复多改几次。

PS:如果还会出现404,建议把所有缓存清除后再尝试!

这篇文章有用吗?

点击星号为它评分!

平均分: 0 / 5. 投票数: 0

到目前为止还没有投票!成为第一位评论此文章。

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

赞(0) 打赏
本站所刊载内容均为网络上收集整理,并且以技术研究交流为目的,所有内容仅供大家参考、学习,不存在任何商业目的与商业用途。若您需要使用非免费的软件或服务,您应当购买正版授权并合法使用。如果你下载此文件,表示您同意只将此文件用于参考、学习使用而非任何其他用途。VPS主机推荐 » 如何去除WordPress固定链接URL的category方法

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得不错就打赏一下呗~

支付宝扫一扫打赏

微信扫一扫打赏