2014-10-14 2 views
0

Я использую этот код, который частично работает для изменения URL-адреса профиля повсюду в buddypress и wordpress с «http:/mywebsite/user/username» на «http:/mywebsite/пользователь/идентификатор»Изменить URL-адрес профиля пользователя в Buddypress с псевдонимом или 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 автора в начальной активности -message не работает в обеих группах ые мероприятия и Personnal деятельность

  • изменение URL автора в ОТВЕТЕ деятельности работают

Я не знаю, если я объясняю очень хорошо, что проблема у меня, но я надеюсь, что вы поймете, ,

Спасибо за ваши ответы

PS: благодаря aSeptik из StackExchange для кода

ответ

0

Это невозможно сделать это на лету изящно. Компонент BuddyPress Activity разработан таким образом, что текст с пользовательской ссылкой в ​​потоке активности (для всего сайта, личного и группового) хранится непосредственно в базе данных как action. Просто взгляните на wp_bp_activity. action Поле в вашей БД.

Так что вы должны фильтровать и preg_replace его также. Наверное, вы знаете, что вы нападаете на рендеринг скорости.

Смежные вопросы