簡體   English   中英

使用昵稱或用戶ID更改Buddypress中的用戶個人資料URL

[英]Change user profile URL in Buddypress with nickname or userID

我正在使用此代碼,部分用於將buddypress和wordpress中各處的配置文件URL從“ 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

–活動開始消息作者的網址更改在小組活動和個人活動中均不起作用

  • 活動REPLY的作者的網址更改

我不知道我是否很好地解釋了我遇到的問題,但希望您能理解。

謝謝您的回答

PS:感謝StackExchange的aSeptik提供的代碼

優雅地做到這一點是不可能的。 BuddyPress活動組件的開發方式是,將活動流中具有用戶鏈接的那些文本(針對站點范圍,個人和組)直接作為action存儲在數據庫中。 只需看看wp_bp_activity 數據庫中的action字段。

因此,您也應該過濾和preg_replace它。 我想您知道您正在以渲染速度損失為代價。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM