2013-05-04 112 views
2

我要實現自定義網址,作者。WordPress的自定義網址,作者

目前筆者URL是這樣的: http://site.com/author/author-name/

我要像做 http://site.com/my-custom-url-here

爲每個用戶。 我一直在使用author_rewrite_rules過濾器,使用下面的代碼試過,這個正確轉換網址,但這給了我一個找不到網頁的消息,當我瀏覽網址

add_filter('author_link', 'no_author_base', 1000, 3); 
function no_author_base($link, $author_id) { 
    $link_base = trailingslashit(get_option('home')); 
    $link = preg_replace("|^{$link_base}author/|", '', $link); 
    return $link_base . $link; 
} 
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; 
} 

任何幫助將不勝感激!

謝謝。 UPDATE

問題解決!基本上我不知道調用flush_rewrite_rules函數。

+0

後您實現的代碼,你訪問管理 - >永久鏈接頁面刷新重寫規則? – diggy 2013-05-04 22:08:45

+0

@diggy我不知道這件事情,我知道了,就在這裏:http://wordpress.stackexchange.com/questions/5413/need-help-with-add-rewrite-rule看到我的回答:) – Shaheer 2013-05-04 22:17:55

回答

1

解決了!

我是這樣做的:

所以我刪除它,我並不需要author_link過濾器,我的自定義URL存儲在usermeta表,所以我取他們並通過他們進入改寫陣列,以及最重要的我不知道沖洗改寫CACHE而那是原因,我的原代碼是不工作

繼承人的全碼:

add_filter('author_rewrite_rules', 'my_author_url_with_custom_url_rewrite_rules'); 
function my_author_url_with_custom_url_rewrite_rules($author_rewrite) { 

    global $wpdb; 
    $author_rewrite = array(); 
    $authors = $wpdb->get_results("SELECT ID, user_nicename AS nicename, meta_value as profile_name 
            from $wpdb->users 
            LEFT JOIN wp_usermeta ON wp_usermeta.user_id = $wpdb->users.ID 
            WHERE meta_key = 'profile_name'");  

    foreach ($authors as $author) { 
    $author_rewrite["{$author->profile_name}/page/?([0-9]+)/?$"] = 'index.php?author_name=' . $author->nicename . '&paged=$matches[1]'; 
    $author_rewrite["{$author->profile_name}/?$"] = "index.php?author_name={$author->nicename}"; 
    } 
    return $author_rewrite; 
} 
flush_rewrite_rules(false); 

不要忘記在您完成重寫規則後,請撥打flush_rewrite_rules,這非常昂貴!

+0

做到這一點在WP 3.8.1中工作?它甚至沖洗固定鏈接 – henrywright 2014-03-02 21:08:23

+0

不知道這一點henrywright後,不是爲我工作,對不起 – Shaheer 2014-03-04 06:52:19