WordPressにSQL(INSERT文)で直接投稿する方法

WordPress 4.7.2で似た内容の記事を少しずつ内容を変えて機械的に投稿したかったので、SQLで直接書き込んだ。

単に1記事投稿するだけなら、1つのINSERT文を発行すれば良い。

もっと色々なテーブルが絡んでいるかと思っていたが、そうでもなかった。
WordPressの記事データとしてはこれがほぼ全てだと思って良い。

スポンサーリンク
スポンサーリンク

今日のわかった

テーブルレイアウト仕様

が日本語の一次情報だが…新項目に対応してないぞ…(・。・;

IDについて

ID欄にnullを指定すると自動発番(既存投稿の最高番号+1)される。

なので、GUIDの事を考えない・後で修正するのであればnull値でガンガンINSERTすると捗る。

GUIDについて

ぶっちゃけ、GUIDはユニークになっていなくてもWordPress自身の動きに支障はないと思われる。

が、何処でどういう問題になるか分からないので一応それなりに入れておく。

画面から普通に投稿するとパーマリンクが基本の形式でセットされる。
この仕様だとIDを含んでいるため、INSERT時にID自動発番で楽した場合は、その後でGUIDをUPDATEしておく必要がある。

記事の並び順

ブログ表示上の記事一覧やカテゴリ一覧は純粋に投稿日時だけでソートしているようだ。

こんな感じで機械的に投稿すると投稿日時が被るので記事の並び順がシッチャカメッチャカになってしまうので、投稿日時の振り方は工夫する必要がある。
(記事一覧表示画面がIDを第2キーにしてくれれば良いのだが…)

自分は、エレガントさのエの字もないが

てな感じで、手動で日時を書き換えていって調整した。

記事のオプション

テーマで指定する記事のオプション情報はwp_postmetaテーブルで指定する。
(AFFINGER4の例:AMPの有無、コメント許可、noindex/nofollow指定など)

AFFINGER4では無ければデフォルト値が使われる模様。

テーマの実装によってはwp_postmetaも対応するデータを作ってあげないと異常終了するかもしれない。