質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.64%

wordpress+buddypress:facebookから登録後、アバター画像だけ同期されない!

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,308

sai_to

score 20

前提・実現したいこと

Facebookから引っ張ってきてwordpressに登録したアバター画像を、buddypressで表示したい!

発生している問題

プラグイン「Gianism」を使いFacebookからユーザー情報をwordpress側には登録できたのですが、wordpress側に登録できたアバター画像だけがbuddypressには反映できていないようなんです。

エラーは出ていません。

試したこと

既存のプラグインのままではアバター画像を引っ張ってこれないので、参考にさせていただいたコードを
gianism/functions.php
に書きました。

/**
 * get_social_avatar
 * ソーシャルログインユーザー用アバター画像
 * @param string $img イメージタグ
 * @param string $id_or_email ユーザーIDもしくはEメールアドレス
 * @param numeric $size 画像サイズ
 * @param string $default デフォルト画像URL
 * @param string $atl alt
 * @return string イメージタグ
 */
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="<?php echo esc_attr( $alt ); ?>" width="<?php echo esc_attr( $size ); ?>" height="<?php echo 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 );

また、buddypress側では、
wp-content/plugins/buddypress/bp-core/bp-core-avatars.php
のファイルで

* BuddyPressオブジェクトのアバターを取得します。

  •   *デフォルトでユーザー、グループ、ブログのアバターをサポートしますが、
    *カスタムコンポーネントもサポートするように拡張されました。
  •   *この機能は、ローカルにアップロードされたアバターを優先します。 ローカル
    *アバターが見つからない場合、Gravatarが質問されます。 Gravatarのフォールバックを無効にするには
    *ローカル:
  • add_filter( 'bp_core_fetch_avatar_no_grav'、 '__return_true');

と書かれていましたので
add_filter( 'bp_core_fetch_avatar_no_grav'、 '__return_true');
を有効にしてみましたが変わりませんでした。

あやふやな質問かもしれないのですが、ぜひご教授お願いいたします!

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

check解決した方法

0

現在このシステムを使わなくなったため、募集を停止致します。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

メッセージ失礼いたします。

まさに同様の事象で悩んでいるのですが、こちら解決はされましたでしょうか。
もし解決済みでしたら、アドバイスを頂戴できると幸いです。

何卒よろしくお願いいたします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/06/22 17:44

    tskmydさん
    すみません、大変遅くなってしまいました。
    やはり解決しないまま、このプログラムを使わなくなってしまったので未解決のままなのです。
    お役に立てずにすみません・・・

    キャンセル

  • 2017/06/22 17:57

    私もです!笑
    お手数おかけしました、ありがとうございます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.64%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る