プログラムでURLで画像を取得し、アップロードフォルダーに保存します
-
16-10-2019 - |
質問
私は別のCMSからWordPressへの大規模な移行に関与しています。データベースのコピーがあり、コンテンツを抽出し、プログラム的にWordPressの投稿を作成する方法を説明しました。 wpdb
クラス。
ただし、自動的に引き渡し、さまざまなサイズを生成してから投稿に取り付けて、約1週間の作業を節約したい画像が数千個あります。
URLでリモートサイトから画像を取得し、WP-Uploadsフォルダーに保存する方法はありますか?これは使用すると思います wp_http
しかし、私はそれに不慣れです。
画像を手に入れて保存したら、それを使うことができるので大丈夫です wp_generate_attachment_metadata
さまざまなサイズを作成します wp_insert_attachment
投稿に添付します。
サイモンに感謝します
解決
実際、あなたのためにそれらの3つすべてを行う素晴らしい機能があります:
media_sideload_image( $url, $post_id, $description );
最初の引数は、ダウンロードする画像のリモートURLです。 2番目の引数は、画像を添付したい投稿の投稿IDです。 3番目の引数はオプションですが、含まれている場合は説明になります。
ダウンロードをスロットルする方法を見つけることをお勧めします。これにより、タイミングを出さないようにします。これは、負荷ごとに引き込む画像の数を制限したり、インポーターをダウンロード間で更新したり、Ajaxを使用して1つを実行したりするなどします。一度に非同期に。
他のヒント
ジョンの答えは正しいことです media_sideload_image
, 、WP管理者のコンテキスト内でこれを行っていない場合は、これらのスクリプトを必要とする必要がある場合があることに注意してください。
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