0

我正在尝试创建一个函数,该函数使用保存在用户元数据中的自定义 URL 覆盖当前用户头像 URL。到目前为止,该功能有效,除了我很难弄清楚如何让该功能获取用户 buddypress/wordpress 的用户 ID 正在获取头像。

到目前为止的代码如下所示:

// return new URL for avatar
function wpse_49216_my_new_avatar_url() {

// get user_id of user bp/wp is getting avatar for
$user_id = bp_get_member_user_id(); 

// get avatar name from above user's meta
$avatar_choice = get_user_meta($user_id, "avatar_choice", true);

if($avatar_choice) {
  return 'path_to_avatars/'.$avatar_choice.'.png';
} else {
  return 'path_to_avatars/default-avatar.png';
}
}

add_filter( 'bp_core_fetch_avatar_url', 'wpse_49216_my_new_avatar_url' );

// Replace image src="" with the new avatar URL
function wpse_49216_filter_bp_avatar( $html ) {
   return preg_replace( '/src=".+?"/', 'src="' . wpse_49216_my_new_avatar_url() . '"', $html      );
}
add_filter( 'bp_core_fetch_avatar', 'wpse_49216_filter_bp_avatar' );

主要问题是如果我将 $user_id 设置为当前登录用户的 ID,那么所有头像都将加载当前登录用户的头像。并且bp_get_member_user_id()仅适用于会员页面。我需要通用的东西。是否有任何Wordpress/Buddypress专家知道如何获得正确的用户 ID?

4

2 回答 2

0

我需要通用的东西

如果您查看您正在过滤的功能,您会发现它取决于知道您在 BP 中的“位置”。由于它是由上下文驱动的,因此没有通用的方法。

于 2013-09-25T13:10:19.987 回答
0

您可以在以下函数中使用全局用户 ID:

bp_displayed_user_id()
于 2014-01-06T07:47:52.663 回答