Wordpressの投稿記事への添付画像の取り扱いについて
Wordpressを使い出して随分経ちますが、未だに画像の取り扱いについて正確に理解していませんでした。
投稿作成時に画像をアップした後、それを挿入しなかったら宙に浮く?
メディアライブラリからアップした場合との関係性は?
テンプレ内で添付画像を表示しようとすると?
投稿記事との関連付けは?
etc...
そのため、上記等の疑問に応えるべく調べるor実験したので、わかったことを箇条書きしてみたいと思います
- アップロードされた画像は、いずれか1つの記事に対して「添付(attach)」することができる
- 記事編集画面から「画像の追加」などでアップロードした場合には、その記事に「添付」される
- メディアライブラリから、記事とは無関係にアップロードされた場合には、記事に「添付」されることはないが、ライブラリの一覧から「投稿に添付」をした場合や、どこかの記事で最初に「投稿に挿入」された時点で、その記事に「添付」される
- 複数の記事に「添付」することはできない。しかし複数の記事で「投稿に挿入」することはもちろんできる。
- 添付された記事が削除された場合には、「添付」がなくなるだけでファイルそのものは消滅しない
- 記事に添付された画像は
- その記事で「画像の追加」画面を表示したときに「ギャラリー」タブの中に一覧で表示される
- WPのギャラリー機能([gallery]ショートコード)を使用した場合に表示される
以上です。
まとめてみると意外とシンプルな感じですね。
しかし、複数記事に添付できないというのは、利便性が悪いなと感じてしまいます。これだとギャラリー機能が活用できないような・・
うーん、うまく扱うのがとても難しい・・
-
(追記)
ついでに、画像類をWPのエクスポート形式であるWXR形式にするとどうなるかも調べた。
- メディアライブラリの各画像が一つ一つ
- として記載される
- post_typeはattachmentになる。
- item要素の中身はだいたいpageやpostと同じ感じで、画像の情報がtitleやbody、postmetaに格納される感じ
- 添付されている記事はpost_parentに記事idが入っている。記事側には添付画像のデータを保有していない
- まとめるとメディアライブラリ自体も一つのpost_typeとして管理されている感じ
- として記載される
(追記2)
ついでにカスタムフィールドプラグインで作った画像アップロードフォームからデータをアップするとどうなるかも調べた
- アップロードした画像がメディアライブラリに自動的に追加される
- 添付状態は「添付なし」となる(何故・・?
- その記事のpostmetaデータにフィールド名をキーにして、添付idが保存される
後は記事のテンプレ側で添付idを使って画像を表示すればOKだと思われる。