ワイヤード・パンチ

WordPressのメディアライブラリの各画像のアップロード先を、関数で設定する方法。

仕事のうえで、Wordpressの管理画面からではなく、公開画面上から画像を投稿できるフォームを作らないといけないときがありました。

メディアライブラリを開いてみると、各画像には「アップロード先」という、どの記事に紐付いているのかを決める値が存在します。

それを画像アップロード直後ではなく、関数であとから指定したいのですが、どうすればできるのでしょうか。

広告

そもそも関数で画像をアップロードするには?

関数リファレンス/wp insert attachment – WordPress Codex 日本語版

上記サイトに書かれているコードを参考にすれば、だいたい流れは掴めるでしょう。

でもこのコードでメディアのアップロード先をしているのは、wp_insert_attachmentという関数。

wp_insert_attachmentはメディアライブラリに画像を新規投稿するときに使う関数ですが、今回は新規投稿と同時にアップロード先を設定したいわけではないのです。

でも、任意のタイミングでアップロード先を設定する関数はあるのでしょうか?

あとからアップロード先を決める関数。

何かメディアライブラリ用の更新の関数があるのでしょうか?

updateとかmetaとか、それらしい名前をテキトーにつけて検索をかけてみると、なぜかぜんぜん見つからず。

でも、アップロード先の更新には、専用の関数なんてありませんでした。

なんと、通常の投稿記事と同様の関数を使えば、簡単にメディアのアップロード先を変更できるのでした。

wp_update_post([
	"ID" => $attach_id,
	"post_parent" => $post_id,
]);

投稿記事を更新するときに使う、wp_update_postを使えばOKでした。

上記のコードの場合、$attach_idにはメディアのID、$post_idにはアップロード先となる投稿記事のIDを入れます。

これを実行することで、簡単にメディアにアップロード先をあとから設定することができました。

てっきり専用の関数があるかと思って、無駄に調べまくってしまいました…。

余談。

メディアのアップロード先について調べても、今回のように該当の画像が使われている記事のことじゃなくて、メディアライブラリに存在する画像が格納されている、uploadフォルダのことばかりが出てきてしまいます。

そのせいで、調べ物にますます時間を消耗してしまうことに…。

なんか他に良い呼び方ないですかね?