質問するログイン新規登録

質問編集履歴

1

問題点が更新されました。

2016/11/21 09:20

投稿

sai_to
sai_to

スコア20

title CHANGED
@@ -1,1 +1,1 @@
1
- wordpress,facebookから登録でプロフィ画像を取得・登録する
1
+ wordpress+buddypress:facebookから登録後、アバター画像だけ同期されない!
body CHANGED
@@ -1,9 +1,86 @@
1
- お世話になってます。
1
+ ###前提・実現したこと
2
- 表題のとおり、wordpressでfacebookから登録があった場合にプロフィール画像を取得して登録したいのです。
3
- 現在はプラグイン「Gianism」を使っています。
4
- いくつか参考になるソースを見つけたので実装してみたのですが、うまくいきませんでした。
5
2
 
6
- Gianismで実装された方がいましたら、ぜひご教授くださいませ!
7
- 、プラグイン使わずとも取得きる方法がありましたら是非知りたのです。
3
+ Facebookから引っ張ってきてwordpressに登録しアバター画像、buddypress表示したい
8
4
 
9
- よろくお願致します!
5
+ ###発生る問題
6
+
7
+ プラグイン「Gianism」を使いFacebookからユーザー情報をwordpress側には登録できたのですが、wordpress側に登録できたアバター画像だけがbuddypressには反映できていないようなんです。
8
+
9
+ エラーは出ていません。
10
+
11
+ ###試したこと
12
+
13
+ 既存のプラグインのままではアバター画像を引っ張ってこれないので、参考にさせていただいたコードを
14
+ gianism/functions.php
15
+ に書きました。
16
+ ```php
17
+ /**
18
+ * get_social_avatar
19
+ * ソーシャルログインユーザー用アバター画像
20
+ * @param string $img イメージタグ
21
+ * @param string $id_or_email ユーザーIDもしくはEメールアドレス
22
+ * @param numeric $size 画像サイズ
23
+ * @param string $default デフォルト画像URL
24
+ * @param string $atl alt
25
+ * @return string イメージタグ
26
+ */
27
+ function get_social_avatar( $img, $id_or_email, $size, $default, $alt ) {
28
+ $_wpg_facebook_id = get_the_author_meta( '_wpg_facebook_id', $id_or_email );
29
+ $_wpg_twitter_screen_name = get_the_author_meta( '_wpg_twitter_screen_name', $id_or_email );
30
+ // Facebookのとき
31
+ if ( $_wpg_facebook_id ) {
32
+ $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" />';
33
+ }
34
+ // Twitterのとき
35
+ elseif ( $_wpg_twitter_screen_name ) {
36
+ if ( false === ( $profile_image_url = get_transient( 'twitter_avatar_' . $_wpg_twitter_screen_name ) ) ) {
37
+ if ( class_exists( 'Twitter_Controller' ) ) {
38
+ $wp_gianism_option = get_option( 'wp_gianism_option' );
39
+ $Twitter_Controller = new Twitter_Controller( array(
40
+ "tw_screen_name" => $id_or_email,
41
+ "tw_consumer_key" => $wp_gianism_option['tw_consumer_key'],
42
+ "tw_consumer_secret" => $wp_gianism_option['tw_consumer_secret'],
43
+ "tw_access_token" => $wp_gianism_option['tw_access_token'],
44
+ "tw_access_token_secret" => $wp_gianism_option['tw_access_token_secret'],
45
+ ) );
46
+ $t = $Twitter_Controller->request( 'users/show', array(
47
+ 'screen_name' => $_wpg_twitter_screen_name
48
+ ) );
49
+ } else {
50
+ $twitter = \Gianism\Service\Twitter::get_instance();
51
+ $t = $twitter->call_api( 'users/show', array(
52
+ 'screen_name' => $_wpg_twitter_screen_name
53
+ ) );
54
+ }
55
+ $profile_image_url = $t->profile_image_url;
56
+ set_transient( 'twitter_avatar_' . $_wpg_twitter_screen_name, $profile_image_url, 60 * 60 * 1 );
57
+ }
58
+ if ( $profile_image_url ) {
59
+ $img = '<img src="' . esc_url( $profile_image_url ) . '" alt="' . esc_attr( $alt ) .'" width="' . esc_attr( $size ) .'" height="' . esc_attr( $size ) . '" class="avatar photo" />';
60
+ }
61
+ }
62
+ return $img;
63
+ }
64
+ add_filter( 'get_avatar', 'get_social_avatar', 10, 5 );
65
+
66
+ ```
67
+
68
+ また、buddypress側では、
69
+ wp-content/plugins/buddypress/bp-core/bp-core-avatars.php
70
+ のファイルで
71
+ > * BuddyPressオブジェクトのアバターを取得します。
72
+ *
73
+ *デフォルトでユーザー、グループ、ブログのアバターをサポートしますが、
74
+ *カスタムコンポーネントもサポートするように拡張されました。
75
+ *
76
+ *この機能は、ローカルにアップロードされたアバターを優先します。 ローカル
77
+ *アバターが見つからない場合、Gravatarが質問されます。 Gravatarのフォールバックを無効にするには
78
+ *ローカル:
79
+ * add_filter( 'bp_core_fetch_avatar_no_grav'、 '__return_true');
80
+
81
+ と書かれていましたので
82
+ add_filter( 'bp_core_fetch_avatar_no_grav'、 '__return_true');
83
+ を有効にしてみましたが変わりませんでした。
84
+
85
+
86
+ あやふやな質問かもしれないのですが、ぜひご教授お願いいたします!