質問編集履歴

1

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

2016/11/21 09:20

投稿

sai_to
sai_to

スコア20

test CHANGED
@@ -1 +1 @@
1
- wordpress,facebookから登録でプロフィ画像を取得・登録する
1
+ wordpress+buddypress:facebookから登録後、アバター画像だけ同期されない!
test CHANGED
@@ -1,17 +1,171 @@
1
- お世話になってます。
1
+ ###前提・実現したこと
2
-
3
- 表題のとおり、wordpressでfacebookから登録があった場合にプロフィール画像を取得して登録したいのです。
4
-
5
- 現在はプラグイン「Gianism」を使っています。
6
-
7
- いくつか参考になるソースを見つけたので実装してみたのですが、うまくいきませんでした。
8
2
 
9
3
 
10
4
 
11
- Gianismで実装された方がいましたら、ぜひご教授くださいませ!
12
-
13
- た、プラグインを使わずとも取得きる方法がありましたら是非知りたのです。
5
+ Facebookから引っ張ってきてwordpressに登録しアバター画像をbuddypress表示したい
14
6
 
15
7
 
16
8
 
17
- よろくお願致します!
9
+ ###発生る問題
10
+
11
+
12
+
13
+ プラグイン「Gianism」を使いFacebookからユーザー情報をwordpress側には登録できたのですが、wordpress側に登録できたアバター画像だけがbuddypressには反映できていないようなんです。
14
+
15
+
16
+
17
+ エラーは出ていません。
18
+
19
+
20
+
21
+ ###試したこと
22
+
23
+
24
+
25
+ 既存のプラグインのままではアバター画像を引っ張ってこれないので、参考にさせていただいたコードを
26
+
27
+ gianism/functions.php
28
+
29
+ に書きました。
30
+
31
+ ```php
32
+
33
+ /**
34
+
35
+ * get_social_avatar
36
+
37
+ * ソーシャルログインユーザー用アバター画像
38
+
39
+ * @param string $img イメージタグ
40
+
41
+ * @param string $id_or_email ユーザーIDもしくはEメールアドレス
42
+
43
+ * @param numeric $size 画像サイズ
44
+
45
+ * @param string $default デフォルト画像URL
46
+
47
+ * @param string $atl alt
48
+
49
+ * @return string イメージタグ
50
+
51
+ */
52
+
53
+ function get_social_avatar( $img, $id_or_email, $size, $default, $alt ) {
54
+
55
+ $_wpg_facebook_id = get_the_author_meta( '_wpg_facebook_id', $id_or_email );
56
+
57
+ $_wpg_twitter_screen_name = get_the_author_meta( '_wpg_twitter_screen_name', $id_or_email );
58
+
59
+ // Facebookのとき
60
+
61
+ if ( $_wpg_facebook_id ) {
62
+
63
+ $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" />';
64
+
65
+ }
66
+
67
+ // Twitterのとき
68
+
69
+ elseif ( $_wpg_twitter_screen_name ) {
70
+
71
+ if ( false === ( $profile_image_url = get_transient( 'twitter_avatar_' . $_wpg_twitter_screen_name ) ) ) {
72
+
73
+ if ( class_exists( 'Twitter_Controller' ) ) {
74
+
75
+ $wp_gianism_option = get_option( 'wp_gianism_option' );
76
+
77
+ $Twitter_Controller = new Twitter_Controller( array(
78
+
79
+ "tw_screen_name" => $id_or_email,
80
+
81
+ "tw_consumer_key" => $wp_gianism_option['tw_consumer_key'],
82
+
83
+ "tw_consumer_secret" => $wp_gianism_option['tw_consumer_secret'],
84
+
85
+ "tw_access_token" => $wp_gianism_option['tw_access_token'],
86
+
87
+ "tw_access_token_secret" => $wp_gianism_option['tw_access_token_secret'],
88
+
89
+ ) );
90
+
91
+ $t = $Twitter_Controller->request( 'users/show', array(
92
+
93
+ 'screen_name' => $_wpg_twitter_screen_name
94
+
95
+ ) );
96
+
97
+ } else {
98
+
99
+ $twitter = \Gianism\Service\Twitter::get_instance();
100
+
101
+ $t = $twitter->call_api( 'users/show', array(
102
+
103
+ 'screen_name' => $_wpg_twitter_screen_name
104
+
105
+ ) );
106
+
107
+ }
108
+
109
+ $profile_image_url = $t->profile_image_url;
110
+
111
+ set_transient( 'twitter_avatar_' . $_wpg_twitter_screen_name, $profile_image_url, 60 * 60 * 1 );
112
+
113
+ }
114
+
115
+ if ( $profile_image_url ) {
116
+
117
+ $img = '<img src="' . esc_url( $profile_image_url ) . '" alt="' . esc_attr( $alt ) .'" width="' . esc_attr( $size ) .'" height="' . esc_attr( $size ) . '" class="avatar photo" />';
118
+
119
+ }
120
+
121
+ }
122
+
123
+ return $img;
124
+
125
+ }
126
+
127
+ add_filter( 'get_avatar', 'get_social_avatar', 10, 5 );
128
+
129
+
130
+
131
+ ```
132
+
133
+
134
+
135
+ また、buddypress側では、
136
+
137
+ wp-content/plugins/buddypress/bp-core/bp-core-avatars.php
138
+
139
+ のファイルで
140
+
141
+ > * BuddyPressオブジェクトのアバターを取得します。
142
+
143
+ *
144
+
145
+ *デフォルトでユーザー、グループ、ブログのアバターをサポートしますが、
146
+
147
+ *カスタムコンポーネントもサポートするように拡張されました。
148
+
149
+ *
150
+
151
+ *この機能は、ローカルにアップロードされたアバターを優先します。 ローカル
152
+
153
+ *アバターが見つからない場合、Gravatarが質問されます。 Gravatarのフォールバックを無効にするには
154
+
155
+ *ローカル:
156
+
157
+ * add_filter( 'bp_core_fetch_avatar_no_grav'、 '__return_true');
158
+
159
+
160
+
161
+ と書かれていましたので
162
+
163
+ add_filter( 'bp_core_fetch_avatar_no_grav'、 '__return_true');
164
+
165
+ を有効にしてみましたが変わりませんでした。
166
+
167
+
168
+
169
+
170
+
171
+ あやふやな質問かもしれないのですが、ぜひご教授お願いいたします!