0

デフォルトの「ミステリーマン」のプロフィール写真を別の写真に置き換えたい。

ご存知のように、 http: //graph.facebook.com/ / pictureにアクセスして誰かのFacebookプロフィール写真にアクセスできます(要求されたアカウントのUIDに置き換えてください。

つまり、基本的に私が行ったことは、テーマの関数ファイルを次の数行に追加することでした。

 add_filter( 'avatar_defaults', 'newgravatar' );  


function newgravatar ($avatar_defaults) {  
    $myavatar = 'http://graph.facebook.com/'.get_current_user_id().'/picture';
    $avatar_defaults[$myavatar] = "FB Profile Picture";  
    return $avatar_defaults;  
}

問題は、wordpressがこのURLを直接表示しないことです。画像はWordPress.comのサーバーに保存されます。その結果、画像は常に同じ画像であり、別のユーザーがログインしても変更されません。

WordPressがサーバーに画像をキャッシュしないようにする方法はありますか?それとも私がやりたいことをする他の方法はありますか?

4

2 に答える 2

0

誰かがカスタム アバターを持つ Gmail アカウントを持っていて、そのメール アドレスが登録に使用されている場合、そのアバターが自動的に使用されます。これはまさにあなたが探しているものではないかもしれませんが、知っておくとかなり役立つと思いました.

アップデート:

ここであなたの答えを見つけました:

http://buildinternet.com/2009/02/how-to-change-the-default-gravatar-in-wordpress/

于 2013-03-02T21:00:29.247 に答える
0

私は最終的にこのフィルターを使用してそれを修正することができました:

    add_filter('get_avatar', 'new_fb_insert_avatar', 1, 5);



function new_fb_insert_avatar($avatar = '', $id_or_email, $size = 96, $default = '', $alt = false) {



  $id = 0;

  if (is_numeric($id_or_email)) {

    $id = $id_or_email;

  } else if (is_string($id_or_email)) {

    $u = get_user_by('email', $id_or_email);

    $id = $u->id;

  } else if (is_object($id_or_email)) {

    $id = $id_or_email->user_id;

  }

  if ($id == 0) return $avatar;

  $pic = get_user_meta($id, 'fb_profile_picture', true);

  if (!$pic || $pic == '') return $avatar;

  $avatar = preg_replace('/src=("|\').*?("|\')/i', 'src=\'' . $pic . '\'', $avatar);

  return $avatar;

}

これget_user_meta($id, 'fb_profile_picture', true);により、ユーザーのカスタム アバター画像が表示されます。ユーザーごとに異なる画像があり、ユーザー メタ情報に保存されます。

于 2013-03-05T11:53:12.337 に答える