使用昵称或用户 ID 在 Buddypress 中更改用户配置文件 URL

Posted

技术标签:

【中文标题】使用昵称或用户 ID 在 Buddypress 中更改用户配置文件 URL【英文标题】:Change user profile URL in Buddypress with nickname or userID 【发布时间】:2014-10-14 17:12:05 【问题描述】:

我正在使用此代码,该代码部分用于将 buddypress 和 wordpress 中的配置文件网址从“http:/mywebsite/user/username”更改为“http:/mywebsite/user/userid”

    function _bp_core_get_user_domain($domain, $user_id, $user_nicename = false, $user_login = false) 
    if ( empty( $user_id ) )
        return;
    
    if( isset($user_nicename) )
        $user_nicename = bp_core_get_username($user_id);
    
    $after_domain =  bp_get_members_root_slug() . '/' . $user_id;

    $domain = trailingslashit( bp_get_root_domain() . '/' . $after_domain );
    $domain = apply_filters( 'bp_core_get_user_domain_pre_cache', $domain, $user_id, $user_nicename, $user_login );
    if ( !empty( $domain ) ) 
        wp_cache_set( 'bp_user_domain_' . $user_id, $domain, 'bp' );
    
    return $domain;


add_filter('bp_core_get_user_domain', '_bp_core_get_user_domain', 10, 4);

function _bp_core_get_userid($userid, $username)
    if(is_numeric($username))
        $aux = get_userdata( $username );
        if( get_userdata( $username ) )
            $userid = $username;
    
    return $userid;


add_filter('bp_core_get_userid', '_bp_core_get_userid', 10, 2);

function _bp_get_activity_parent_content($content)
    global $bp;
    $user = get_user_by('slug', $bp->displayed_user->fullname); // 'slug' - user_nicename
    return preg_replace('/href=\"(.*?)\"/is', 'href="'.bp_core_get_user_domain($user->ID, $bp->displayed_user->fullname).'"', $content);


add_filter( 'bp_get_activity_parent_content','_bp_get_activity_parent_content', 10, 1 );

add_filter('bp_core_get_userid_from_nicename', '_bp_core_get_userid', 10, 2);

目前它对我来说非常有效,但不是在这个小地方(见图):

http://i.imgur.com/4dX0RUB.png

– 活动开始消息作者的 url 更改在团体活动和个人活动中都不起作用

活动作者的网址更改回复正在工作

我不知道我是否很好地解释了我遇到的问题,但我希望你能理解。

感谢您的回答

PS : 感谢 StackExchange 的 aSeptik 提供代码

【问题讨论】:

【参考方案1】:

不可能一蹴而就地优雅地做到这一点。 BuddyPress Activity 组件的开发方式是,那些在活动流中带有用户链接的文本(对于站点范围、个人和组)直接作为action 存储在数据库中。只需查看数据库中的 wp_bp_activity.action 字段即可。

所以你也应该过滤和preg_replace它。我猜你知道你正在用渲染速度损失来惩罚自己。

【讨论】:

以上是关于使用昵称或用户 ID 在 Buddypress 中更改用户配置文件 URL的主要内容,如果未能解决你的问题,请参考以下文章

php 从BuddyPress组中删除用户,其中用户是特定m2p成员资格的成员或没有成员资格

Discord.js如何使用用户ID获取用户昵称

如何获取多用户聊天昵称的 Jabber ID

如何编辑buddypress发送的激活用户的注册邮件

PHP 在Wordpress MU和Buddypress上的地图上显示用户

PHP WordPress / BuddyPress添加用户类型