無需任何插件實(shí)現(xiàn)WordPress去掉鏈接中的category并最簡化分類目錄URL
[重要通告]如您遇疑難雜癥,本站支持知識付費(fèi)業(yè)務(wù),掃右邊二維碼加博主微信,可節(jié)省您寶貴時間哦!
對于去掉category的方法,網(wǎng)上有很多種方式方法,眾說飛云,本站就把WordPress分類目錄URL最簡化 去掉鏈接中的category 方法咱這里就說兩種;
登錄Wordpress后臺,打開固定鏈接/永久鏈接設(shè)置項(xiàng)。在“可選設(shè)置”里的“分類地址前綴”里輸入半角字符:“.”,如下圖所示;保存后即可去掉分類前綴category。
優(yōu)點(diǎn):設(shè)置簡單,適用于初建成的博客,或準(zhǔn)備打算使用固定鏈接 /永久鏈接的博客。用不著修改代碼,升級之時沒有顧慮;用不著插件,不會增加運(yùn)行負(fù)擔(dān)。
缺點(diǎn):原鏈接無法打開,出現(xiàn)404錯誤。開啟重寫后,這樣設(shè)置會導(dǎo)致分類和標(biāo)簽下找不到對應(yīng)文章;
第二種去掉分類鏈接中category方式方法:
復(fù)制以下代碼,粘貼到你網(wǎng)站嗎模板下的 functions.php 文件中即可:
//去除分類標(biāo)志代碼
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;
}
注意代碼一定放在 <?php ? ? ? ? ??> 里面
原理介紹:
這段去掉分類鏈接中category的代碼,就是WP No category Base?插件的主體代碼,我們可以不安裝這個插件,直接通過主題函數(shù)來解決這個問題。
注意事項(xiàng):
不管安裝插件還是用代碼可能會都會出現(xiàn)404頁面,即%post_id%.html(固定鏈接)的偽靜態(tài)會失效!
解決方法:登錄后臺→設(shè)置→固定鏈接設(shè)置頁面,隨意改一下固定鏈接格式,然后再改回自己正常用的偽靜態(tài)規(guī)則即可解決此問題,不行就反復(fù)多改幾次操作哦;
延續(xù):如按照以上還會出現(xiàn)404,建議把所有緩存清除后再嘗試,基本就沒啥問題。
祝各位看官好運(yùn)!
問題未解決?付費(fèi)解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當(dāng)無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!