默認(rèn)情況下,修改固定鏈接為非默認(rèn)帶?的樣式以后,作者存檔的鏈接一般為 http://域名/author/用戶名,這樣就直接暴露了登錄WordPress的用戶名,存在安全隱患。一個(gè)不錯(cuò)的解決方法是將WordPress作者存檔鏈接中的用戶名改為昵稱。
將下面的代碼添加到當(dāng)前主題的 functions.php 中:
/**
* 將WordPress作者存檔鏈接中的用戶名改為昵稱
* http://www.ydqwiac.cn/use-nickname-for-author-slug.html
*/
//使用昵稱替換用戶名,通過用戶ID進(jìn)行查詢
add_filter( 'request', 'wpdaxue_request' );
function wpdaxue_request( $query_vars )
{
if ( array_key_exists( 'author_name', $query_vars ) ) {
global $wpdb;
$author_id = $wpdb->get_var( $wpdb->prepare( "SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key='nickname' AND meta_value = %s", $query_vars['author_name'] ) );
if ( $author_id ) {
$query_vars['author'] = $author_id;
unset( $query_vars['author_name'] );
}
}
return $query_vars;
}
//使用昵稱替換鏈接中的用戶名
add_filter( 'author_link', 'wpdaxue_author_link', 10, 3 );
function wpdaxue_author_link( $link, $author_id, $author_nicename )
{
$author_nickname = get_user_meta( $author_id, 'nickname', true );
if ( $author_nickname ) {
$link = str_replace( $author_nicename, $author_nickname, $link );
}
return $link;
}
接著我們在個(gè)人資料中修改昵稱為其他名稱,如下圖,用戶 demo 的昵稱改為了 changmeng,這樣一來,作者存檔的鏈接就自動(dòng)由 http://域名/author/demo 變成了 http://域名/author/changmeng
此外,記得將“公開顯示為”設(shè)置為非用戶名,這樣就OK啦!
注意:昵稱不要包含空格,同時(shí)不建議使用中文;如果是多用戶博客,可能會(huì)存在昵稱相同的情況,這時(shí)候只會(huì)顯示ID較早的用戶(解決思路是修改個(gè)人資料時(shí),如果使用了相同昵稱,進(jìn)行提示。但是倡萌還不知具體如何實(shí)現(xiàn),如果有朋友知道,希望告知)

參考資料:http://wordpress.stackexchange.com/questions/5742
相關(guān)閱讀:將WordPress作者存檔鏈接中的用戶名改為用戶ID





你好,倡萌,我使用這個(gè)的時(shí)候,當(dāng)昵稱為中文的時(shí)候,出現(xiàn)了404;而英文昵稱的則沒問題。請問是啥情況啊~ 希望解答,謝謝了~
這個(gè)問題不知道怎么處理,也沒時(shí)間測試了
已經(jīng)修復(fù)了,就加了個(gè)urldecode,詳見:http://www.ilxtx.com/use-user-nickname-or-id-for-author-slug.html
或者用firstname(名字)替換鏈接,這樣主題中的大部分模板頁不用全部修改,因?yàn)槲恼轮写蟛糠侄紩?huì)注明作者(用echo the_author_nickname ),剛才嘗試了下,可以用firstname 替換,道理一樣,進(jìn)入作者文章列表(author.php)的鏈接(我用的author_posts_link)也是只支持英文名,不支持中文名。
我打錯(cuò)了一個(gè),是 first_name 替換倡萌大大上面的這串代碼中的nickname 也可以實(shí)現(xiàn)滴!而且就不用去修改seo模板調(diào)用的用戶nickname代碼。簡單一些哦。
可以改良成用用戶ID的話,就不用擔(dān)心昵稱重復(fù)了ID總是不重復(fù)的也無法知道登陸名,求站長改良
同求用ID代替昵稱,昵稱還是會(huì)有重復(fù)的可能
請看 http://www.ydqwiac.cn/use-user-id-for-author-slug.html
請教一個(gè)問題啊,在用戶面板中只有用戶名為不可更改,如果我想使多個(gè)字段為不可更改,如何實(shí)現(xiàn)呢?比如說我想讓名字和姓氏也不能更改?