nihimotoの日記

https://mapsengine.google.com/map/edit?mid=zhpqXW1XM-zc.kmD-c8p1GAWI

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だと思われる。