web-dev-qa-db-ja.com

プログラムでURLで画像を取得し、uploadsフォルダに保存する

私は他のCMSからWordPressへの大規模な移行に関わっています。データベースのコピーがあり、wpdbクラスのインスタンス化を使用してコンテンツを抽出し、そこからプログラムでWordPressの投稿を作成する方法を学びました。

しかし、約1週間の作業を節約するために、自動的に引き出してさまざまなサイズを生成して投稿に添付したい、数千枚の画像があります。

URLでリモートサイトから画像を取得してwp-uploadsフォルダに保存する方法はありますか?これはwp_httpを使っていると思いますが、私はそれに慣れていません。

画像を取得して保存したら、wp_generate_attachment_metadataを使用してさまざまなサイズを作成し、wp_insert_attachmentを使用して投稿に添付できるので、問題ありません。

ありがとうサイモン

13

これら3つすべてをあなたに代わって実行するすばらしい機能が実際にあります。

media_sideload_image( $url, $post_id, $description );

最初の引数はダウンロードしたい画像のリモートURLです。 2番目の引数は、画像を添付する投稿の投稿IDです。 3番目の引数はオプションですが、含まれている場合は説明になります。

ロードごとに取り込む画像の数を制限したり、ダウンロードの間に自分自身を更新するようにインポーターを設定したり、AJAXを使用するなど、タイムアウトを回避しないようにダウンロードを絞り込む方法を見つけることをお勧めします。非同期でそれらを一度に1つずつ実行します。

27
John P Bloch

Johnの答えは正しいです。media_sideload_imageを使用してください、WP Adminの範囲内でこれをしていないのであれば、これらのスクリプトを要求する必要があるかもしれません。

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

https://codex.wordpress.org/Function_Reference/media_sideload_image#Notes を参照してください。

2
bryceadams