• This question is for Security.
    How can I display nickname only instead username in links?

    I found this functions.php:

    add_filter( 'request', 'wpse5742_request' );
    function wpse5742_request( $query_vars )
    {
        if ( array_key_exists( 'author_name', $query_vars ) ) {
            global $wpdb;
            $author_id = $wpdb->get_var( $wpdb->prepare( "SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key='nickname' AND meta_value = %s", $query_vars['author_name'] ) );
            if ( $author_id ) {
                $query_vars['author'] = $author_id;
                unset( $query_vars['author_name'] );    
            }
        }
        return $query_vars;
    }
    add_filter( 'author_link', 'wpse5742_author_link', 10, 3 );
    function wpse5742_author_link( $link, $author_id, $author_nicename )
    {
        $author_nickname = get_user_meta( $author_id, 'nickname', true );
        if ( $author_nickname ) {
            $link = str_replace( $author_nicename, $author_nickname, $link );
        }
        return $link;
    }

    It works, but only with Blog Posts, not in:

    Comments, meta, widgets, etc.
    Neither for: buddypress (activity, groups, members, notifications, etc.) and bbpress forums.

    If you Right Click on Public Name you can see the Username in:

    https://www.yoursite.com/author/username (in Comments)
    https://www.yoursite.com/members/username
    https://www.yoursite.com/forums/profile/username

    Also, If you go to a Buddypress Profile, you can see, for example:

    John Doe
    @johnstack (username)

    ==========================

    The correct:

    John Doe
    @johndoe (nickname)

    https://www.yoursite.com/author/nickname
    https://www.yoursite.com/members/nickname
    https://www.yoursite.com/forums/profile/nickname

    Please, any solution for Forcing to Show the Nickname Only (based on your first name and last name) in Profile and all Links.

  • The topic ‘UserName Exposed…’ is closed to new replies.