web-dev-qa-db-ja.com

どのようにphpを介して既存の投稿に注目の画像を追加するのですか?

PHP経由で既存の投稿に注目の画像を追加するのに問題があります。画像はwp-content/uploadフォルダにあります。私がしているスクリプトは、プラグイン、テーマ、またはそのようなものではありません。呼び出されるたびに実行される単なる自動化スクリプトです。

この場合の最善のアプローチは何ですか?

1
ghaschel

トリックはmedia_sideload_image()set_post_thumbnail()です。 media_sideload_image()は、それが/wp-content/に存在しているか他の場所にあるかにかかわらず(あなたが他のサイトであっても)、あなたが画像へのURLを取得できると仮定します。プログラムで画像のURLを参照できるのであれば、これでうまくいくはずです。

$image = 'image.jpg';
$media = media_sideload_image($image, $post->ID);
if(!empty($media) && !is_wp_error($media)){
    $args = array(
        'post_type' => 'attachment',
        'posts_per_page' => 1,
        'post_status' => 'any',
        'post_parent' => $post->ID
    );

    // reference new image to set as featured
    $attachments = get_posts($args);

    if($attachments){
        foreach($attachments as $attachment){
            set_post_thumbnail($post->ID, $attachment->ID);
            // only want one image
            break;
        }
    }
}
2
GhostToast