URLから画像を取得し、注目画像/投稿サムネイルとして設定する方法


17

Vimeo IDを指定すると、Vimeo Simple APIを介してビデオからサムネイルを取得できます。ページがロードされるたびにAPIを呼び出すのではなく、save_postフックを使用して投稿サムネイルとして画像を設定します(この質問に似ています)。

私の問題は、PHPでのURL呼び出しに慣れていないことです。私が知りたいのですが:

  1. curlと比較しWP_Httpたカールのような方法を使用することの利点/欠点 一方が他方より「優れている」のでしょうか?

  2. 投稿サムネイルを正常に設定するために関数を呼び出す順序。

どんな助けも大歓迎です。


誰かがこれを理解しましたか?私もこれをやろうとしています。

回答:


12

この問題を処理する私のお気に入りの方法は、別のスタックポストで発見した、少し文書化された関数を使用することです。 media_sideload_image

画像のURLをWordPressのアップロードディレクトリに取得し、画像を投稿の添付ファイルに関連付けることで機能します。

次のように試すことができます:

// required libraries for media_sideload_image
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');

// $post_id == the post you want the image to be attached to
// $video_thumb_url == the vimeo video's thumb url
// $description == optional description

// load the image
$result = media_sideload_image($video_thumb_url, $post_id, $description);

// then find the last image added to the post attachments
$attachments = get_posts(array('numberposts' => '1', 'post_parent' => $post_id, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC'));


if(sizeof($attachments) > 0){
    // set image as the post thumbnail
    set_post_thumbnail($post_id, $attachments[0]->ID);
}  

4

こんにちは@David John Smith

1.)WordPressを使用している場合、(ほとんど)常にWP_Http;を使用します。これは、WordPressで作業することで私が大好きなことの1つです。なぜCURLではなくそれを呼び出すのですか?それは、より良い構文を持ち、CURLが利用可能な場合にCURLを呼び出すためです。そうでない場合は、他の3つのオプションのいずれかから選択します。本当に素晴らしいキットです。

2.)2番目の質問に答えるには、ダウンロードするファイルに名前を付ける方法を知る必要がありますか?


マイクありがとう。ポストサムネイルとして、私は本当に彼らが命名しているか、私はどちらかによって、ポストに関連して、それらにアクセスできるようにするのと同じように気にしませんpost_thumbnail()get_post_meta()。投稿IDで名前を付けるのは理にかなっていると思います。
デビッドジョンスミス

これに関するアップデートはありますか?
NetConstructor.com

@NetConstructor-「保留中」状態の質問を追跡するのは本当に難しいので、いいえ。ブックマークバーに「保留中」フォルダーを作成しましたが、これと整合性が取れない場合があります。しかし、私は今この時間がないので、それに戻る必要があります。
MikeSchinkel

@マイク-おかげでマイクは、ちょうどあなたがこのようなもののマスターであるように見えるあなたが他のものの間で原因ここに解決策を持っていたかもしれないと思った:-)
NetConstructor.com

@ NetConstructor.com-LOL!おかげで、私はデバッガの達人になりました。それだけです。:)
MikeSchinkel
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.