web-dev-qa-db-ja.com

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

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

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

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

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

任意の助けは大歓迎です。

16

この問題を処理するための私のお気に入りの方法は、私が他のスタックポストで発見した文書化された小さな機能を使うことでした: media_sideload_image

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

あなたはそう試すことができます:

// 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);
}  
12
sxalexander

こんにちは @David John Smith

1.)WordPressを使用している場合は、(ほとんど)常にWP_Httpを使用します。それは私がWordPressを扱うことについて私が愛する多くのことのうちの1つです。 CURLではなく、なぜそれを呼ぶのですか?それは、より良い構文であり、CURLが使用可能であればCURLを呼び出すからです。そうでなければ、それは他の3つのオプションの1つから選択します。だからそれは本当にキットの素晴らしい作品です。

2.)2番目の質問に答えるには、ダウンロードしているファイルにどのように名前を付けるのかを知っておく必要がありますか?

4
MikeSchinkel