作為wordpress的重度使用者,對于wordpress網站的每一個細節我都很在意。
相信很多站長和我一樣!
網站搭建起來,我發現url中一直有一個“category”,我表示很不爽,想盡辦法要把這個萬惡的單詞給去掉。結合網友們分享的教程和個人總結,去掉“category”的方法無非就是使用插件、代碼實作、修改函數、修改固定連結方式四種有效方法。
一、使用插件
如果你是傻瓜式建站,沒有一定的代碼基礎,又很介意url中的“category”的話,建議使用插件,直接在wp背景搜尋插件安裝就可以!然後重新整理網站就會發現url中的“category”已經被順利去除。
推薦兩款插件:
no category parents:作者milardovich,上面插件的更新版,不僅能去掉分類連結的字首category,還能去掉父分類 parent-category。例如能把“/category/parent-category/my-category/”換成“/my-category/”形式。
優點:安裝簡單,老少皆宜。無論是初建成的部落格,還是正打算使用固定連結 /永久連結的部落格,還是被搜尋引擎收錄良好的部落格。用不着修改代碼,更新之時沒有顧慮。使用 301跳轉,把原連結進行跳轉。最大程度防止搜尋引擎降級,防止原連結打不開。
不足:插件或許會造成空間負擔。這裡不說是缺點,就是因為,造成的“空間負擔”微乎其微,不應該是缺點。比較在意的就不用,無所謂推薦使用。
wp no category base:作者idope,是為去除固定連結中分類連結裡的category而開發出來的一款wordpress插件,被下載下傳近5萬次。安裝啟用此插件後,對原來的分類位址做了301跳轉,對seo優化有好處,把降級風險降到最低。
但是不得不說的是,wp使用插件過多,會導緻網站加載緩慢。這是使用插件的方式解決問題的弊病。
二、使用代碼去除“cotegory”
直接貼如下代碼,将下面代碼加到主題functions.php中?>前儲存,回到背景固定連結設定點選“儲存更改”兩次。如果前台分類目錄頁面不能通路,就再固定連結設定更新下;回到目錄頁面就能看到連結中的category被去除了,通路原來帶category連結也會跳轉到新連結上。
/*
*wordpress去除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
$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]';
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;
三、修改函數
1、找到你wordpress部落格wp-includes檔案夾下的category-template.php。
2、打開此檔案,搜尋(get_category_link()函數裡)的以下代碼:
在其後,另起一行加入:
3、儲存上傳到伺服器即可。
四、修改固定連結,去掉分類連結字首category
登入你的wordpress背景,打開固定連結/永久連結設定項。在“可選設定”裡的“分類位址字首”裡輸入半角字元: “.”;儲存即可去掉分類字首category。
優點:設定簡單,老少皆宜。适用于初建成的部落格,或剛打算使用固定連結 /永久連結的部落格。用不着修改代碼,更新之時沒有顧慮;用不着插件,不會增加運作負擔。
缺點:原連結無法打開,出現404錯誤。被搜尋引擎收錄良好,或分類連結有較多外鍊鍊入的部落格,可要萬分小心了。不要因為操作簡單、省時省力而損失了大量外鍊及權重。
開啟重寫後,這樣設定會導緻分類和标簽下找不到對應文章,是以最好還是隻将其縮短。
以上四類方式均可以有效去除url中的“category”,各位站長可根據自己的實際情況來選擇去除方式。若還有其他有效方式,請在評論區留言交流。