BuddyPress - wlasna nazwa uzytkownika w linkach

Masz problem z modyfikacją wtyczki Wordpress, to odpowiednie miejsce na Twój wpis.
no avatar
Jarek Amdrecki
 
Posty: 26
Reputacja: 1 pkt
Od: 24 lut 2015, o 16:09

BuddyPress - wlasna nazwa uzytkownika w linkach

przez Jarek Amdrecki » 23 mar 2015, o 21:58

Zainstalowałem buddypressa, jednak brakuje w nim możliwości przypisania nazw linków wg. własnego wzorca. A jako, że mam różne role użytkowników, chciałbym je wyświetlać w różnych katalogach przypisanych na jej podstawie. Np.

- mojastrona.pl/spolecznosc/klienci/imie-nazwisko
- mojastrona.pl/spolecznosc/gracze/imie-nazwisko

niestety nie da się tego tak wykonać, bez błędów w dalszej strukturze (lub po prostu nie mam pojęcia jak), wymyśliłem więc, że będzie prościej podmienić nazwę użytkownika w linkach, wyglądało by to wtedy tak:

- mojastrona.pl/spolecznosc/imie-nazwisko-klient-miasto
- mojastrona.pl/spolecznosc/imie-nazwisko-gracz

znalazlem odpowiednia funkcje do nadpisania tj. bp_core_get_user_domain i wrzuciłem kod function.php mojej skórki:

Kod: Zaznacz cały
function _bp_core_get_user_domain( $domain, $user_id, $user_nicename, $user_login ) {
        if ( empty( $user_id ) ){
            return;
        }
      
      // sprawdzanie roli
      $user = new WP_User($user_id);
      $user_role = $user->roles[0];
      
      // warunki do spelnienia
      if ( $user_role == 'gracz' ) {
         $username = bp_core_get_username( $user_id ).'-gracz';
      }
      elseif ( $user_role == 'klient' ) {
         $username = bp_core_get_username( $user_id ) . $typ_klienta . $miasto_klienta;
      }
      else {
         $username = bp_core_get_username( $user_id );
      }
      
        $after_domain =  bp_get_members_root_slug() . '/' . $username; // nazwa uzytkownika w linku

        $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);


i oczywiście pojawia się to wszystko w linku tyle tylko, że zamiast do strony z danym profilem przekierowuje do strony z błędem 404.

Pytanie brzmi jak mogę zachować id danego użytkownika w tak spreparowanym linku?

EDIT: wystarczy podmienić wartości pola nicename (można to zrobić w momencie rejestracji danego konta) i tego pola użyć w funkcji powyżej :)



  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Modyfikacja wtyczek Wordpress

Kto przegląda forum Wordpress

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości