2014-10-14 10 views
0

"http :/mywebsite/user/username"에서 buddypress 및 wordpress의 모든 곳에서 프로필 URL을 변경하기 위해 부분적으로 작동하는이 코드를 사용하고 있습니다. "http :/mywebsite/사용자/사용자 ID "닉네임 또는 사용자 아이디로 Buddypress에서 사용자 프로파일 URL을 변경하십시오.

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 변경 - 메시지가 두 그룹에서 작동하지 않습니다. 의 활동과 personnal 활동

  • 활동 REPLY의 저자의 URL 변화는 내가 잘 내가 가지고하지만 난 당신이 이해 바랍니다 어떤 문제를 설명하고 있다면 나도 몰라

을하고있다 .

는 답변을

PS 감사 : 감사 aSeptik에 StackExchange에서 코드

답변

0

그것은 정상적으로 즉석에서 그렇게하는 것은 불가능합니다. BuddyPress 활동 구성 요소는 활동 스트림의 사용자 링크가있는 텍스트 (사이트 전체, 개인 및 그룹)가 action으로 데이터베이스에 직접 저장되는 방식으로 개발됩니다. wp_bp_activity을 살펴보십시오. 귀하의 DB에 action 필드.

필터해야하고 preg_replace도 필터링해야합니다. 나는 당신이 속도 저하를 렌더링하는 것에 불이익을 당하고 있다는 것을 알고 있다고 생각합니다.