従来はJetpackで、雑記の更新情報をWordpressにメールで投稿していた。
しかしJetpackがF&Fを商用サイトと見なしたので、無料で使えなくなった。
有料版を使えば済むが、月額7千円くらいのプランでないとダメなのかな、今は。
メール投稿用のプラグインであるPOSTIEは最初に使ってみたのだが、これはプラグイン自体が動作しなかった。
メールが受信されればメールの通数は表示する。
しかしメールを取得しようとすると表示データがブランクになり、プラグインのページ自体が表示されなくなる。
POSTIEのサポートフォーラムに状況を報告してみたが、回答はなかった。
メール投稿ではなく、いわゆる連携投稿サービスみたいなものがある。
これを調べてみるとZapierというサービスがあった。
専用のプラグインをインストールし、Zapierサイト側からそのプラグインを経由して投稿するというもの。
ただプラグインの評価が低くて、動作しないと書かれていた。
WordPressのプラグインでは珍しいほど評価が低いのだが、とりあえずインストールしてみた。
設定はさほど難しくはなく、APIのキーなどを入れでば準備は完了だ。
で、動作させたがうまく行かなかった。
サイトからアプリへの接続テストは出来るのだが、実際に投稿のために接続しようとするとHTTPエラーか何かで接続が出来ない。
プラグインを止めてしまうと、プラグインがないよと言うエラーになる。
なのでプラグイン自体は認識していると思うが、動作はしなかった。
これは3時間くらい頑張ってみたが、結局ダメだったのである。
うまく行ったとしても月額6千円くらいかかるプランでないとダメかも。
Zapierと似たものとしてMAKE(Integromet)がある。
これもやってみたのだが、こちらは設定が難しくて挫折した。
方法としてはZapierに似ていて、Wordpress側にはプラグインを入れる。
プラグインがAPIキーを出してくるのでこれをMake側に設定する。
記事自体はGmail経由で取り込ませるのが楽そうではあったが…
Gmail側の設定がややこしい。
いくつかのページを見ると、Gmailのアカウントは企業ユースとして設定されていなければダメみたいなものもあった。
これも3時間くらいやってみたのだが…
設定が難しくて利用を諦めたと書かれている記事を見て、私もさっさと諦める事にした。
テストで接続をしようとしても、エラーが出るばかりでうまく行かなかった。

使ったことがある人なら用語が分かると思うのだが、そもそもそのフィールドに何を設定するのかが分からない。
Helpを見ても、そのフィールドが何を要求しているのかが分からなかった。
例えばConnect/IDとなっていたとして、それが何のIDなのか?何をConnectするものなのかが分からない。
上手く設定が出来たとしても、無料のクレジットを使い切れば有料になる。
価格は一番安いプランで6千円くらいだったかな、良く見ていないのだけれど。
これらの自動投稿サービスは、AI記事を書かせるのに使う用途が多いのだとか。
AI連携で記事を量産して投稿するのに適しているらしい。
WebフォームからWordpressに取り込むプラグインもある。
これにしてもフォームからの送信と同じ事をPerlで書いてやらせれば済むのだが、プラグイン側の仕様が変わると動作しなくなるよなとか、面倒でやりたくないだけなんだけど。
RSSを取り込んで記事にするプラグインを使うのは簡単そうだ。
しかし今は雑記のRSSを作っていないので、RSSを作るところから構築しないといけない。
Perlで書けば良いのだが、遠回りな気がするんだなぁ。
そこにテキストがあるのだから、それをWordpressに読み込めば良いだけなので。
だったらREST APIを叩いてしまった方が早いのではないのか、どうせソフトを書くのなら。
と言うことで重い腰を上げる事にした。
ソフトはPHPで書いたのだが、PerlにしてもPHPにしても全く得意ではない。
手順としては以下のようになる。
・WordpressにAPI用のアカウントを作り、API用のパスワードを発行する。
・雑記の更新情報を(従来の処理の)Perlに追加して更新ファイルに書き出す。
・PHPから更新ファイルを読み込み、curlでWordpressのAPIを叩き、投稿する。

一々ファイルに書き出さずにPerlからPHPに変数で渡しても良いのだが、データ加工が必要になったときやデバッグの容易さも考えて、ファイル経由で渡すことにした。
少し試しているのだが、雑記の文章そのものではなくAI要約したものをBlog側に載せても良いのかなと。
<?php
# アップロードするwordpressのurl
$base_url = 'https://www.fnf.jp/blog2/annex';
#雑記のタイトルと本文
$wp_title = '/home/ff/textarea/wp_title.txt';
$wp_contents = '/home/ff/textarea/wp_contents.txt'
#
$title = file_get_contents($wp_title);
$contents = file_get_contents($wp_contents);
$media_id = 14455; //F&Fタイトル画像
#雑記はS-JISで書かれているので、UTFに変換する
$utf_title = mb_convert_encoding($title, "UTF-8","SJIS");
$utf_contents = mb_convert_encoding($contents, "UTF-8","SJIS");
$data = json_encode(
[
'title' => $utf_title,
'content' => $utf_contents,
'status' => 'draft', //下書きに投稿
'categories' => 17, //雑記カテゴリの番号
'featured_media' => (int)$media_id,
],
JSON_UNESCAPED_UNICODE
);
$header = [
'Authorization: Basic ' . base64_encode( 'API_USER_NAME:API_USER_PASSWORD' ), //API用ユーザIDとそのパスワード
'Content-Type: application/json',
];
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $base_url . '/wp-json/wp/v2/posts',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => $header,
CURLOPT_RETURNTRANSFER => true,
]);
$response = curl_exec($curl);
curl_close($curl);
?>
毎回違った画像を投稿する場合は、まず画像を投稿してそのID(画像番号みたいなもの)を取得し、それをfeatured_mediaで指定して画像とコンテンツを関係づける。
タイトルや本文はUTF-8にする必要があり、UTF-8でないとエラーでAPIが動作しない。
文字が化けるとか化けないとか以前に、コンテンツがアップロード出来ない。
‘status’ => ‘draft’
これは下書きに投稿しているが、即時投稿や投稿予約も出来る。
publish(即時公開)
future(投稿予約)
draft(下書き)
pending(非公開)
private(限定公開)
投稿予約の場合は’date’ => ‘2025-12-20T12:00:00’のように、日時を指定する。

コメント