在网站SEO优化中url优化是相对来说比较重要的环节,wordpress分类的链接地址在wordpress程序中会自带category目录,例如:https://www.zhankr.net/category/learn。
如果能够去掉分类链接中的category无疑也是网站seo优化的一种手法。
下面分享一段去掉分类链接中的category的wordpress代码
使用方法
复制下面代码粘贴到functions.php文件里即可
//去掉分类链接中的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();
}
// 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;
}
代码很长,也不用看懂,直接将上面代码添加到主题functions.php文件就行
文章来自AT互联https://www.at8848.cn转载请注明出处,并保留本链接,谢谢!