GianismでTwitter,Facebookログインした場合にアイコン画像を取得する

harada 893views 更新:2014年7月2日

下記のソースコードをfunctions.phpに追加することで、プロフィール画像を取得することができるようです。
ですが、ユーザーが別途独自にアバターを設定した場合には設定したアバターを表示させたいという希望がまだできないため、保留にしています。

function get_social_avatar( $img, $id_or_email, $size, $default, $alt ) {
    $_wpg_facebook_id = get_the_author_meta( '_wpg_facebook_id', $id_or_email );
    $_wpg_twitter_screen_name = get_the_author_meta( '_wpg_twitter_screen_name', $id_or_email );
    // Facebookのとき
    if ( $_wpg_facebook_id ) {
        $img = '<img src="https://graph.facebook.com/' . esc_attr( $_wpg_facebook_id ) . '/picture?type=square" alt="' . esc_attr( $alt ) .'" width="' . esc_attr( $size ) .'" height="' . esc_attr( $size ) .'" class="avatar photo" />';
    }
    // Twitterのとき
    elseif ( $_wpg_twitter_screen_name ) {
        if ( false === ( $profile_image_url = get_transient( 'twitter_avatar_' . $_wpg_twitter_screen_name ) ) ) {
            if ( class_exists( 'Twitter_Controller' ) ) {
                $wp_gianism_option = get_option( 'wp_gianism_option' );
                $Twitter_Controller = new Twitter_Controller( array(
                    "tw_screen_name" => $id_or_email,
                    "tw_consumer_key" => $wp_gianism_option['tw_consumer_key'],
                    "tw_consumer_secret" => $wp_gianism_option['tw_consumer_secret'],
                    "tw_access_token" => $wp_gianism_option['tw_access_token'],
                    "tw_access_token_secret" => $wp_gianism_option['tw_access_token_secret'],
                ) );
                $t = $Twitter_Controller->request( 'users/show', array(
                    'screen_name' => $_wpg_twitter_screen_name
                ) );
            } else {
                $twitter = \Gianism\Service\Twitter::get_instance();
                $t = $twitter->call_api( 'users/show', array(
                    'screen_name' => $_wpg_twitter_screen_name
                ) );
            }
            $profile_image_url = $t->profile_image_url;
            set_transient( 'twitter_avatar_' . $_wpg_twitter_screen_name, $profile_image_url, 60 * 60 * 1 );
        }
        if ( $profile_image_url ) {
            $img = '<img src="' . esc_url( $profile_image_url ) . '" alt="' . esc_attr( $alt ) .'" width="' . esc_attr( $size ) .'" height="' . esc_attr( $size ) . '" class="avatar photo" />';
        }
    }
    return $img;
}
add_filter( 'get_avatar', 'get_social_avatar', 10, 5 );

参考:ソーシャルログインプラグインGianismのカスタマイズいろいろ

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません