bbpress 的 profile 鏈接默認顯示用户名,可以修改為顯示用户 ID 嗎

正在查看 7 個帖子:1-7 (共 7 個帖子)
  • 作者
    帖子
  • 蟲洞
    • 文章數量: 43
    @jixin
    樓主

    我現在的網站使用 Ultimate Member 讓用户註冊,因為用户名只能是英文,所以在註冊的時候,我沒有讓用户填寫用户名,而是換成了暱稱和郵件。

    這樣註冊完成後,用户名默認和郵件相同,所以在其它用户瀏覽某用户的論壇 profile 時,鏈接顯示的是一個郵件地址,但是會扭曲,比如/users/7397399qq-com,就這樣,一看也能知道該用户的郵箱。

    壞處是:

    1. 暴露了用户的郵箱地址

    2. 論壇顯示的是暱稱,別人 @他的話,會很自然的 @他的暱稱,但是這樣不起作用,只能 @他的用户名才可以,比如,他的暱稱是:呵呵,@呵呵不管用,只有 @7397399qq-c0m 才起作用。

    基於以上兩點弊端,我想出來一個辦法,通過網上的辦法,我實現了讓用户名支持中文,這樣註冊完成之後,用户名和暱稱就是相同的,這樣在論壇,大家就可以很方便的 @了。 profile 頁面去掉了讓用户修改暱稱的窗口,不要讓用户修改暱稱,避免修改後無法影響 @體驗。

    但是這樣又出現了一個問題,因為 bbpress 的 profile 鏈接裏面,又多出了中文,比如:/user/呵呵

    問題又來了,我使用了 WP User Avatar 插件來實現用户更改自定義頭像的功能,在點擊上傳圖片後,用户 「呵呵」 的 profile 就進不去了。英文用户名不會有問題。這估計是中文 url 引起的錯誤。

    後來我想,如果把 profile 裏面的用户名,改成用户 ID,應該就解決這個問題了。

    找了好久,不知道如何把用户名修改為用户 ID,所以請大神們看看這個如何修改。

    謝謝各位!

    蟲洞
    • 文章數量: 43
    @jixin
    樓主

    在論壇中,直接點擊某個樓回覆,如果不開啓嵌套回覆,根本看不出來是回覆的誰。

    但是如果開啓嵌套回覆的話,在手機上的效果很差,最不能容忍的是,嵌套回覆不分頁。

    所以還是改回了不嵌套。

    很糾結。

    風間
    參與者
    • 文章數量: 670
    @fengjian

    第一個問題,其實被你給弄複雜了,不知道你現在網站的結構是怎樣的 已經安裝了 Ultimate Member 的話,那麼可以直接用重定向到 Ultimate Member 的資料頁,

    再一個就是論壇 profile 這個其實還是因為你註冊表單沒有設計好,讓用户直接填入一個數字或者拼音的字符就可以了,改成漢字的話問題會很多,因為 WordPress 原生的很多東西都是基於英文字符和字段的。

    你要改成數字 ID 的用户名,方案是找到了,但沒測試:

    https://bbpress.org/forums/topic/user-profile-url-uses-the-username-can-that-be-changed/

    風間
    參與者
    • 文章數量: 670
    @fengjian

    第二個問題的話,因為 bbPress 原生的就比較簡單,如果是要點加載效果的話,上傳好像説過:

    可以試試這個

    bbPress Direct Quotes 自動為每次引用的帖子添加鏈接:

    https://wenpai.org/plugins/bbpress-direct-quotes/

    蟲洞
    • 文章數量: 43
    @jixin
    樓主

    改成數字 ID 的那個帖子,我試過上面給的代碼了,管用,他的問題和我的一樣,不想暴露用户的 email 。

    bbPress Direct Quotes 這個插件試了一下,不起作用,估計是年久失修了。

    蟲洞
    • 文章數量: 43
    @jixin
    樓主

    https://bbpress.org/forums/topic/user-profile-url-uses-the-username-can-that-be-changed/

    這個鏈接裏面給出的函數很有用。

    他給出的函數本身是用來把 username 改為 displayname,意外的是,還有另外一個收穫,就是不用 @username 了,只需要 @displayname,對方就會收到郵件提醒了。不過,有個壞處,就是 displayname 可以有重名,重名的用户,都會收到郵件。

    我稍微把作者的函數修改了一下,修改為顯示用户的 ID 號,這樣,就可以通過 @用户 ID 來通知對方有回覆了。

    這是修改後的代碼:

    add_action( 'init', 'nicenames_to_display_name' );
    function nicenames_to_display_name() {
    foreach ( get_users() as $user ) {
    if ( $user->data->user_status == 0 && $user->data->user_nicename != $user->data->display_name ) {
    $user_ids[] = $user->ID;
    }
    }
    foreach( $user_ids as $uid ) {
    $info = get_userdata( $uid );
    $display_name = $info->data->display_name;
    if ($display_name) {
    $args = array(
    'ID' => $uid,
    'user_nicename' => strtolower(str_replace(" ", "_", $uid))
    );
    wp_update_user( $args );
    }
    }
    }
    詩語
    管理員
    • 文章數量: 5,932
    @feibisi

    挺好的,又多了一種解決方案,感謝分享。

正在查看 7 個帖子:1-7 (共 7 個帖子)
  • 哎呀,回覆話題必需登錄。

話題信息

  • 當前位於:bbPress
  • 6 條回覆
  • 3 個參與人
  • 最後回覆:<a href="https://bbs.weixiaoduo.com/users/feibisi/" title=" 查看詩語的個人資料" class="bbp-author-link"><span class="bbp-author-name"> 詩語</span></a>
  • 上次活動:<a href="https://bbs.weixiaoduo.com/topic/23536/#post-23548" title=" 回覆至:bbpress 的 profile 鏈接默認顯示用户名,可以修改為顯示用户 ID 嗎">7 年、 5 月前</a>