web-dev-qa-db-ja.com

ユーザーのFacebookの写真をWordpressのアップロードとして取得する

私は私の商業ウェブサイトのためのCMSとしてそれを使うつもりであるので、私は新しくて、Wordpressがどのように働くかに関して少し面倒です。私はユーザーのFacebookの写真から取得した画像を作成し、それをアップロードファイルとしてWordpressに保存する方法について考え出してきました。

最初に説明しましょう。

私はFacebookのテストユーザーを作成し、登録後に自分のFacebookの情報を取得できるようにしました(基本情報を取得してwp_insert_user()を使用することで)。私のWordpressサイトにupdate_user_metaを付けて保存するだけなので、基本的なユーザー情報の取得に問題はありません。私はまた、Facebook APIを使ってユーザーのFacebookの写真の画像リンクを取得することができました。

しかし、今のところ、私はそれらの画像をWordpressメディアとして保存して、ユーザーがそれらを操作(更新または削除)できるようにする必要があります。私はのようにしようとしました。ユーザー登録中、私のウェブサイトはユーザーの写真ファイルを取得して私のサイトに保存することができます。ユーザーがログインすると、自分のサイトで自分のFacebookの写真を閲覧でき、必要に応じて写真を削除して新しい写真をアップロードできます。

例えば、これが検索されたユーザープロフィール写真であるとしましょう: -

http://graph.facebook.com/118114855253013/picture?type=large 

とユーザーのFacebookカバー写真: -

https://scontent.xx.fbcdn.net/hphotos-xft1/v/t1.0-9/12931266_119567738441058_7589195259803266908_n.jpg?oh=d709e39e7525c69e96a2b1695d4930fa&oe=57C011F2

facebookのAPIから: -

$response = $fb->get('/me?fields=id, name, cover, picture, albums{name,photos{source}}',  $longLivedAccessToken);
$user = $response->getGraphUser();

$coverpic = $user['cover']['source'];
$profilepic = 'http://graph.facebook.com/' . $user['id'] . '/picture?type=large';

通常私は直接他の基本的な情報と一緒にユーザーmetaにそれを保存します: -

update_user_meta( $user_id, 'coverpic', $coverpic );
update_user_meta( $user_id, 'profilepic', $profilepic );

しかし、それはFacebookからの画像をリンクするだけです。そのupdate_user_meta()メソッドを変更して私の知らないものに変更する必要があるかもしれません。おそらくwp_handle_upload()wp_insert_attachment()のようなWordpressのアップロード機能、あるいは私を混乱させる他の関連する機能かもしれません。しかし、私は何日もWordpressのドキュメントを読んでいて、私の現在の状況でそれらを適用するのに苦労していました。私はWordpressメディアに保存する方法フロントエンドのプロファイルページでユーザー自身が操作できるようにする方法を考え出しています。私のサイトの彼らの「Facebook経由のWordpressログイン」の後。

私は本当にここで助けが必要です。私のプログラミングの頭脳はとても遅いです、私はそれで上手くなるために私自身を殺すかもしれません...

1
Kaydarin

ファイルへのリンクを取得してメディアライブラリにアップロードする media_sideload_image() を使用できます。 あなたはそれをある種の$post_idに渡す必要があります @ Sumit は、NULL$post_idフィールドに渡すことができるコメントで指摘しています。

media_sideload_image(
    $file_url,
    $post_id,
    $image_desc,
    $return
);

アップロードした画像IDが必要な場合は、 を見てください。Tom J.今度はフックを使って回答します

2
Howdy_McGee