你基本上需要添加WP重寫規則所需形式每個用戶的名稱相匹配。這是WP No Category Base對類別所做的,因此我的答案中的大部分代碼都是從該插件改編而來的。
該插件的主要部分是掛鉤到author_rewrite_rules
篩選器並替換作者重寫規則的函數。這將檢索所有用戶名並專門爲每個用戶添加一個重寫規則(下面不會處理提要,所以如果需要的話,請查看WP No Category Base源代碼)。
add_filter('author_rewrite_rules', 'no_author_base_rewrite_rules');
function no_author_base_rewrite_rules($author_rewrite) {
global $wpdb;
$author_rewrite = array();
$authors = $wpdb->get_results("SELECT user_nicename AS nicename from $wpdb->users");
foreach($authors as $author) {
$author_rewrite["({$author->nicename})/page/?([0-9]+)/?$"] = 'index.php?author_name=$matches[1]&paged=$matches[2]';
$author_rewrite["({$author->nicename})/?$"] = 'index.php?author_name=$matches[1]';
}
return $author_rewrite;
}
插件的另一關鍵部分是其掛鉤插入author_link
濾波器,並從返回的URL的「作者」基礎的功能。
add_filter('author_link', 'no_author_base', 1000, 2);
function no_author_base($link, $author_id) {
$link_base = trailingslashit(get_option('home'));
$link = preg_replace("|^{$link_base}author/|", '', $link);
return $link_base . $link;
}
看到這個要點:http://gist.github.com/564465
這不會從舊風格筆者的URL重定向處理,再次看到WP無類別基本來源,如果你需要做的。
我不會推薦! '/ author /'標籤用於命名空間作者。刪除它會混淆WordPress,如果你有一個名爲'cameron'的頁面,因爲默認情況下頁面會自動用於永久鏈接。 – EAMann 2010-09-02 18:44:05
與刪除'/ category /'前綴無異。我的客戶已經要求這樣做,因爲他們希望這些網址能夠匹配目前與此類似的文章。domain.com/cameron/2010/post-title /' 您是否知道如何刪除作者前綴?謝謝。 – Cameron 2010-09-02 19:14:47
'WP No Category Base'插件(http://wordpress.org/extend/plugins/wp-no-category-base/)源代碼應該給你一個很好的起點。基本的想法是添加WP重寫規則,該規則匹配每個作者的名字。 – 2010-09-02 20:48:33