Forum Replies Created
-
I found a solution for my version of the problem and learned a few things along the way that might help with your BuddyPress avatar problems.
Full text at: http://luke.gedeon.name/buddypress-wrong-avatar-fix.html
What I found:
In the file /wp-content/plugins/buddypress/bp-core/bp-core-avatars.php, lines 344 and following contain the following code:
global $authordata;
if ( is_object( $user ) )
$id = $user->user_id;
else if ( is_numeric( $user ) )
$id = $user;
else
$id = $authordata->ID;
if ( empty( $id ) )
return $avatar;
I think that last “if statement†may be there to catch cases where the commenter does not have a BuddyPress account (which is the majority on my site at this point). However, if you look closely at the block just above the “if ( empty( $id))†you will notice $id is never going to be empty at this point.
That suggests two possible solutions.
Solution 1:
I have not tested this, but it makes sense that you could move the last “if statement†above the first “if statement.†That way you can check for “empty( $id )†before it gets set toâ€$authordata->IDâ€
Solution 2:
I found it works quite well to add these lines just under the last “if statement.â€
if ( is_string( $user ) )
return $avatar;
This will catch any case where an email is sent as input, which is what all (most) non-buddypress themes send. Cases where numbers or objects are sent (the BuddyPress method) will be handled normally.
Maybe I can get this added into the next release of BuddyPress.
I found a solution for my version of the problem and learned a few things along the way that might help with you BuddyPress avatar problems.
Full text at: http://luke.gedeon.name/buddypress-wrong-avatar-fix.html
What I found:
In the file /wp-content/plugins/buddypress/bp-core/bp-core-avatars.php, lines 344 and following contain the following code:
global $authordata;
if ( is_object( $user ) )
$id = $user->user_id;
else if ( is_numeric( $user ) )
$id = $user;
else
$id = $authordata->ID;
if ( empty( $id ) )
return $avatar;
I think that last “if statement†may be there to catch cases where the commenter does not have a BuddyPress account (which is the majority on my site at this point). However, if you look closely at the block just above the “if ( empty( $id))†you will notice $id is never going to be empty at this point.
That suggests two possible solutions.
Solution 1:
I have not tested this, but it makes sense that you could move the last “if statement†above the first “if statement.†That way you can check for “empty( $id )†before it gets set toâ€$authordata->IDâ€
Solution 2:
I found it works quite well to add these lines just under the last “if statement.â€
if ( is_string( $user ) )
return $avatar;
This will catch any case where an email is sent as input, which is what all (most) non-buddypress themes send. Cases where numbers or objects are sent (the BuddyPress method) will be handled normally.
Maybe I can get this added into the next release of BuddyPress.