WordPressにプログラムから記事のひな型を投稿する方法
2023.03.03
WordPressのMySQLに無理やり記事のひな型を投稿する方法です。この方法では、記事は「下書き」、記事カテゴリは「未分類」になります。
とりあえず、PHPなどから記事となるひな型を挿入しておいて、あとからWordPressの管理画面からその記事を整えて公開するといった使い方ができるかもしれません。
対象テーブルは投稿テーブル(posts)のみです。
※postsテーブルはユーザの環境によってhoge_postsなどの名前になっています。
1. 挿入SQL(PHPなどで処理が必要)
最初に投稿テーブル(posts)の最大IDに1を加算した挿入用のIDを取得します。
posts.IDはauto_incrementなので、LAST_INSERT_IDでposts.IDの値を取得するのが良いのかもしれませんが、この方法だと1回のSELECTと1回以上のINSERTのみで完結します。
SELECT max(ID)+1 AS ID FROM posts;
上記で挿入するべきIDを取得できます。
このIDをPHPの変数に記録しておき下の挿入SQLに適用します。
INSERT INTO posts (
ID,
post_author,
post_content,
post_title,
post_status,
guid,
post_type
)
VALUE (
<?php echo $ID; ?>,
1,
'
<!-- wp:heading -->
<h2>あいうえお</h2>
<!-- /wp:heading -->
<!-- wp:heading {"level":3} -->
<h3>かきくけこ</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>さしすせそ</p>
<!-- /wp:paragraph -->
',
'タイトル',
'draft',
'https://example.com/?p=<?php echo $ID; ?>',
'post'
);
上のwp:headingなどのHTMLコメント部分はWordPressのブロックエディタで使用しているキーワードになります。 ※とりあえずh2,h3,pのみ対応してます。ほかのタグの挿入にはWordPressを解析する必要あり。
28行目のドメインは自サイトのドメイン、11,28行目の「<?php echo $ID; ?>」は最初の手順で取得した挿入するべきIDを適応するということです。
複数の投稿を挿入する場合は、post_content(投稿本文)とpost_title(投稿タイトル)を適宜変更し$ID++(INERT毎に新しいIDに更新)したINSERTを必要回数繰り返し実行すればOK。