2014-06-27 61 views
1

我希望能夠在我的URL中使用用戶的登錄名,然後抓取它以便在頁面模板中使用。就像這樣:WordPress add_rewrite_rule用於在URL中登錄用戶

mywebsite.com/admin/users/user/{user_login}

我試過以下,但query_var不會被添加到查詢和匹配總是從URL的端部剝離,像這樣:

mywebsite.com/admin/users/user/login-name/ - > mywebsite.com/admin/users/user/

我知道重寫正在發生,因爲它成功地將我帶到了「用戶」頁面,但我似乎無法獲得用戶登錄信息。

/* add query var */ 

function add_user_query_vars($query_vars){ 

    $query_vars[] = 'user_login'; 

    return $query_vars; 

} 

add_filter('query_vars', 'add_user_query_vars'); 

/* add rewrite rule */ 

function add_user_rewrite_rules($rules){ 

    $user_rules = array('admin/users/user/([a-zA-Z0-9\._-]+)/?$' => 'index.php?pagename=user&user_login=$matches[1]'); 

    $rules = $user_rules + $rules; 

    return $rules; 

} 

add_filter('rewrite_rules_array', 'add_user_rewrite_rules'); 

謝謝!

+0

您是否嘗試重建固定鏈接?這可能適用於此。 – Navelpluisje

+0

是的,我通過從wp儀表板重新加載永久鏈接頁面來刷新永久鏈接。 – HWD

回答

0

想通了!

您必須在pagename參數中包含整個頁面層次結構。在我的情況下,它是admin/users/user,所以我的重寫看起來像這樣,並且在刷新重寫規則之後,它按預期工作。

$user_rules = array('admin/users/user/([a-zA-Z0-9\._-]+)/?$' => 'index.php?pagename=admin/users/user&user_login=$matches[1]'); 
0

如何在.htaccess文件中做到這一點?

這在DOCUMENT_ROOT

RewriteEngine On 
RewriteRule ^admin/users/user/([^/]+)/? index.php?pagename=user&user_login=$1 [DPI,L] 

添加到.htaccess文件這是假設的mod_rewrite是安裝爲htaccess的文件被激活。

+0

是的,如果我通過.htacces來做同樣的事情。是否有另一個WP重寫規則覆蓋它? – HWD

+0

管理員文件夾是否在放置'.htaccess'的文件夾的正下方? – zx81

+0

admin是最頂層的父頁面。管理員>用戶>用戶 - 所有頁面。 – HWD