私は他のCMSからWordPressへの大規模な移行に関わっています。データベースのコピーがあり、wpdb
クラスのインスタンス化を使用してコンテンツを抽出し、そこからプログラムでWordPressの投稿を作成する方法を学びました。
しかし、約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つずつ実行します。
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 を参照してください。