ブログの自動化 – WordPressでのメディアの登録のされ方

前回の記事の続き

ブログの自動化にあたり事前にいくつか調べておきます。

※この記事を書き始めた時は、直接接続でデータベースに書き込もうと考えていました。
途中でリファレンスを見つけAPIが用意されていることを知ったのでRESTを使用する方に方針を変更します。

調査内容

調べたいこと

  • WordPressの動き
    • メディア関連 ← 今回の記事の内容
      • 画像保存のルール
      • 画像圧縮時の動作
      • アイキャッチ画像はどうやって紐づけている?
    • 記事関連
      • コンテンツ(記事)の保存方法 → MySQLのテーブルとデータ構造
      • 記事はMarkdownでもよい?それともHTML?

前提

以前、Wordpressの移行を行ったとき以下のデータを移行することで再構築ができました。
理屈では以下のデータの整合性さえ保てれば外部から変更を加えても大丈夫なハズです。
記事の投稿にはpluginsとthemesは不要と考えています。

  • データベースデータ
  • /wordpress/htdocs/wp-content/uploads
  • /wordpress/htdocs/wp-content/plugins
  • /wordpress/htdocs/wp-content/themes

調査方法

プラグインが絡むと複雑なので新規にWordpressを立ち上げて調査します。
言語だけ日本語に変更しそれ以外は特に変更していません。
AWSのEC2でBitnamiイメージを使用して立上げています。

詳細はこちら

今回、TeratermとWinSCPを使用してインスタンスとやりとりを行います。

詳細はこちら

MySQLとの接続も一部行います。その際はA5M2を使用しています。

詳細はこちら

プラグインを何も入れていないWordpressはテーブル数が12であり、
全てみてもそれほどの労力ではなさそうです。
事前にすべてのテーブルのデータをCSVで取得しておき操作ごとにデータの変化を確認します。
A5M2の機能のCSV出力を使用しています。

blogautomation-research1-01

以下3つのディレクトリを変化確認のためバックアップしておきます。
バックアップ方法はこの辺を参考にしてください。
uploads
plugins
thems

  • /wordpress/htdocs/wp-content/uploads
  • /wordpress/htdocs/wp-content/plugins
  • /wordpress/htdocs/wp-content/themes

GitHubからWordpressのソースコードを取得しておきます。

画像保存のルール調査

WordPress(新規)に実際に画像を配置して確認します。
調査内容としては以下の通りです。

  • 画像情報の保存場所(データベース?)
  • 画像の保存場所
  • 画像の保存場所と画像ファイルの所有者とパーミッション

画像の保存場所

データベースデータ

  1. テスト画像を上げてみる
    Wordpressダッシュボード → メディア → 新規追加

blogautomation-research1-02

  1. 変化点の確認

変化したファイルは以下の2種類

  • bitnami_wordpress.wp_postmeta.csv
  • bitnami_wordpress.wp_posts.csv

blogautomation-research1-03

変化した内容ですが

bitnami_wordpress.wp_postmeta.csv

meta_idの3から下が追加されました。
データの意味や作り方はよくわかりません。

blogautomation-research1-04

bitnami_wordpress.wp_posts.csv

idが4から下のものが追加されました。
こちらもデータの意味や作り方はわかりません。

blogautomation-research1-05

  1. テスト画像をもう一度上げてみる

bitnami_wordpress.wp_postmeta.csv

meta_idは通し番号。
post_idはUp回数の通し番号みたいです。
meta_keyは_wp_attached_fileと_wp_attachement_metadataはおそらくデータの意味を表す識別文字列とかでしょう。
meta_valueも一部が異なるだけでほぼ固定でいけそう。

blogautomation-research1-06

# meta_id=5のmeta_value
a:5:{s:5:"width";i:1133;s:6:"height";i:676;s:4:"file";s:16:"2020/08/test.png";s:5:"sizes";a:4:{s:6:"medium";a:4:{s:4:"file";s:16:"test-300x179.png";s:5:"width";i:300;s:6:"height";i:179;s:9:"mime-type";s:9:"image/png";}s:5:"large";a:4:{s:4:"file";s:17:"test-1024x611.png";s:5:"width";i:1024;s:6:"height";i:611;s:9:"mime-type";s:9:"image/png";}s:9:"thumbnail";a:4:{s:4:"file";s:16:"test-150x150.png";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:9:"image/png";}s:12:"medium_large";a:4:{s:4:"file";s:16:"test-768x458.png";s:5:"width";i:768;s:6:"height";i:458;s:9:"mime-type";s:9:"image/png";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}

# meta_id=7のmeta_value
a:5:{s:5:"width";i:1133;s:6:"height";i:676;s:4:"file";s:17:"2020/08/test2.png";s:5:"sizes";a:4:{s:6:"medium";a:4:{s:4:"file";s:17:"test2-300x179.png";s:5:"width";i:300;s:6:"height";i:179;s:9:"mime-type";s:9:"image/png";}s:5:"large";a:4:{s:4:"file";s:18:"test2-1024x611.png";s:5:"width";i:1024;s:6:"height";i:611;s:9:"mime-type";s:9:"image/png";}s:9:"thumbnail";a:4:{s:4:"file";s:17:"test2-150x150.png";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:9:"image/png";}s:12:"medium_large";a:4:{s:4:"file";s:17:"test2-768x458.png";s:5:"width";i:768;s:6:"height";i:458;s:9:"mime-type";s:9:"image/png";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}

bitnami_wordpress.wp_posts.csv

blogautomation-research1-08

ファイルデータ

2o2o/08のディレクトリが作成されて以下のファイルが追加されています。
アップしたデータをいくつかの大きさにリサイズしています。
何気に再現するのが面倒くさそうな動作です。

blogautomation-research1-07

パーミッションは以下の通りです。

ディレクトリ

/opt/bitnami/apps/wordpress/htdocs/wp-content/uploads/2020/08
項目 内容
ディレクトリの所有者 daemon:daemon
パーミッション 755
ファイル 項目 内容
ディレクトリの所有者 daemon:daemon
パーミッション 644

まとめ

REST APIが用意されてた。
何やってたんやろ。。。

おわり

参考資料

https://developer.wordpress.org/

コメントを残す

メールアドレスが公開されることはありません。