Feature #1423


Show an avatar for pingback comment activity items

Added by Boone Gorges about 12 years ago. Updated over 7 years ago.

Priority name:
Tahir Butt
Category name:
BuddyPress (misc)
Target version:
Start date:
Due date:
% Done:


Estimated time:
Deployment actions:


Activity items corresponding to blog pingbacks do not currently have avatars. When it's an internal ping (from the CAC network) we could at least attempt to get the canonical blog or user avatar. And when it's not, we could try doing a Gravatar lookup based on URL or email address.

Actions #1

Updated by Boone Gorges over 8 years ago

  • Assignee changed from Boone Gorges to Daniel Jones

This is a fun one for a rainy day

Actions #2

Updated by Boone Gorges over 7 years ago

  • Assignee changed from Daniel Jones to Tahir Butt

Tahir, this might be a good place to dive into BuddyPress's internals.

The avatars in question are shown in places like Filter by "Show Blog Comment" and you'll see that some items have a dummy avatar. (There is a related bug, which is that they read "commented on the blog post" - missing a subject.)

For avatars, start by filtering 'bp_get_activity_avatar'. Here's a framework:

function cac_anonymous_activity_avatar( $html, $params ) {
    global $activities_template;

    // We're only concerned with avatar requests where the object ID is empty.
    if ( ! empty( $params['item_id'] ) ) {
        return $html;

    // We'll only have enough information to do the lookup if we're in an activity loop. Here's a clunky but effective way to check whether this is the case.
    if ( empty( $activities_template->activity ) ) {
        return $htmls;

    // Then, use the $activity values to fetch the source comment, and get enough information about the commenter to look for an avatar.
    // Then rebuild the $html using the new avatar URL
    // It'll probably look something like this:
    $activity = $activities_template->activity;

    $blog_id = $activity->item_id;
    $comment_id = $activity->secondary_item_id;

    switch_to_blog( $blog_id );
    $comment = get_comment( $comment_id );

    // $comment should have enough info for you to assemble a Gravatar URL. See especially $comment->comment_author_email


    // then do something to rebuild the $html markup that must be returned from this callback
add_filter( 'bp_core_fetch_avatar', 'cac_anonymous_activity_avatar', 10, 2 ); 

This is pretty rough and untested, but it may be enough for you to get a feel for the WP filter system and some of the fundamentals of BP/WP's internals.


Also available in: Atom PDF