近期因为修改网站伪静态导致整个nginx配置文件错误,在数据备份过程中导致了数据丢失。在这里表示非常痛心。但是同时的,因为在优化网站的过程中学习到了很多新的知识。比如:伪静态、百度seo优化、网站统计、手机能够直接播放视频等一系列知识。今天就先来聊一聊如何在wordpress中去除目录链接category。在这里要特别感谢“氪星人”提供的解决方案,大家可以详细查看对方原文:http://defcon.cn。
这里就来讲一讲,在解决该问题中经历了哪些。
可能原先一直采用默认链接:www. example.com/?p=123,看了一系列seo文章后发现这种命名方式不利于百度收录,于是...就改成了:www. example.com/%post_id%.html。当然这个里面还有一系列404的问题,这些会单独说明其心酸历程。
由于以前都是采用默认的,所以对整个网址的目录结构从没关心过,自从改了固定链接后发现:每个分类目录的链接为都存在category这个字段,例如:生活分类目录的地址:www.examole.com/category/life 职场分类目录的地址:www.example.com/category/work ,为什么不直接是 www.example.com/life ;熟悉seo的都知道,目录结构越深越不利于百度能够拿到你的目录,于是...开始各种百度方法。看了下最傻瓜的方式就是安装插件去除,但是为了保障网站不因为插件导致累赘,所以这里不采用插件的形式,而直接通过修改主题目录下functions.php的形式来达成这样的目的。
functions.php位置
/wp-content/themes/主题文件夹名/functions.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;
}
用了该代码后可能会出现404错误,不用慌张。直接在“固定链接”设置页面随意更改下链接的格式,改完之后再改回原先自己用的链接形式即可。
如果依旧一直出现404,就把浏览器缓存清除后再尝试。
文章评论(2)
超好評に持った2018ブランドコピー老舗!
2018 新作が満載!皆様を歓迎して当店をご光臨賜ります。
主要取扱商品 :ヴィトン、シャネル、エルメスなどのブランドの美品。
◆当店の保証:
スタイルが多い、品質がよい、価格が低い!
安心、安全にお届けします。
品数豊富、色々な選択があります。
ブランドコピー 代引きの商品が満載!
100%品質保証!到着保障!
スーパーコピーエルメスベルト http://www.sbagshop.com/brand-34-copy-0.html
经过90分钟身体对抗...斯洛伐克总统季斯卡今天表示,他将要求左派总理费科尝试组成联合政府。
vwin德赢手机网 http://www.ezyjobz.com/