将用户配置文件URL重写为对人友好

时间:2017-02-17 作者:Andrew Brown

我希望你能帮忙。我试着遵循这一点,但没能得到想要的结果。

我使用静态WordPress页面作为在前端显示所有用户配置文件的基础。

该页面为:mydomain。com/用户配置文件,页面id为31848

当每个用户的配置文件加载到该页面时,url如下所示(其中“2053”是当前显示用户的ID):

mydomain.com/user-profile/?users_filter=2053
相反,我希望它看起来像这样:

mydomain.com/user-profile/username
我已经试着坚持到底,但无法让它发挥作用。

任何帮助都将不胜感激。

祝你一切顺利,安德鲁

1 个回复
SO网友:Milo

第一步是添加一个查询变量,以便WordPress能够识别它并在重写规则中解析它的值。

function wpd_query_vars( $query_vars ) {
    $query_vars[] = \'users_filter_name\';
    return $query_vars;
}
add_filter( \'query_vars\', \'wpd_query_vars\' );
接下来,添加重写规则以捕获请求并设置users_filter_name:

function wpd_user_rewrite_rule(){
    add_rewrite_rule(
        \'^user-profile/([^/]*)/?\',
        \'index.php?page_id=31848&users_filter_name=$matches[1]\',
        \'top\'
    );
}
add_action( \'init\', \'wpd_user_rewrite_rule\' );
别忘了flush rewrite rules 在他们改变之后。

然后,您可以访问模板中的查询变量并加载该用户:

if( $users_filter_name = get_query_var( \'users_filter_name\' ) ){
    $user = get_user_by( \'slug\', $users_filter_name );
    if( !empty( $user ) ){
        echo $user->ID; // your original users_filter value
    }
}

相关推荐

Permalinks - Archives

WordPress文档说:WordPress offers you the ability to create a custom URL structure for your permalinks and archives. https://codex.wordpress.org/Settings_Permalinks_Screen 我看到此屏幕将如何为特定帖子/页面创建永久链接,但我没有看到此设置屏幕上关于如何为存档帖子/页面创建链接的任何其他详细信息。有人能澄清一下吗?