对新网站来说优秀的SEO设计可以说是很重要了,不少朋友第一次用wordpress时候发现分类目录的url链接中含有category字样,不知道如何去掉;希望下面的内容能帮到大家。
方法1:修改固定链接设置
打开WP后台-设置-固定链接
自定义结构,可以依据对网站SEO设置url链接,一般推荐数字型,链接短为佳
在分类目录中 输入 英文 半角的点,即 “.” 就可以去掉分类目录url中的category字样;
但请注意,此时得需要你的网站是全新的,没有分类栏目和文章,这样才不会出错,如果已有文章,这样的方法会使你的文章和分类栏目不存在;
本人也不太推荐这种方法,这种方式你的链接形式会是 “ https://jksalang.com/./article” 只是游览器吧/.隐藏掉了,对SEO并不友好。
方法2:使用Wordpress插件
这个方法比较适合小白,只需要在 WP后台-插件-安装插件 中搜索“WP No Category Base”插件,安装并启用即可。
如安装后前台没有变化或错误;请重新保存下固定连接设置
方法3:将 WP No category Base 插件的主体代码插入到function.php中
连接网站FTP,将下列代码添加到主题目录下,“function.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
;
}