【WordPress】画像をメディアに追加したいし画像IDも取得したい
問題
画像をURLから取得してメディアに登録したい。
アイキャッチ画像にしたいから画像IDも取得したい。

答え
media_sideload_image()関数を使うととてもお手軽なのだが、画像のIDが取得できないし、wp_insert_attachment()関数などを使うと追加情報の登録ややサムネイル作成も自力で行わなくてはならなくなるので、以下のようにしてみた。
<?php
/*
//WordPressの外からWordPressの関数を使うなら以下をinclude
require_once('/WordPressをインストールした場所/wp-load.php');
//さらに使いたい機能に応じて必要なファイルをinclude
require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
*/
//画像を取得したいURLがあるとする
$target_url = 'https://example.com/test.jpg';
//$_FILESを偽装したデータを作る
$f = array();
//適当に名前を決める(乱数でも、日時でも、URLからでも)
//$f['name'] = microtime(true) . '.jpg';
$f['name'] = basename($target_url);
//一時的に保存する
$f['tmp_name'] = download_url($target_url);
//メディアに登録してIDを取得
$id = media_handle_sideload($f);
//画像IDからURLを取得
$url = wp_get_attachment_url($id);
//以下、IDとURLを使って処理ができる
//記事に書き込んだり(wp_update_post())
//アイキャッチ画像に指定したり(set_post_thumbnail())