WordPress

WP-Cron を時計として信じるのをやめた|予約投稿を「ズレ・重複・取りこぼし前提」で組み直した設計

WordPress の予約投稿を WP-Cron の正確さに頼らず、結果整合で組み直した設計の記録です。状態を持つ自前ジョブテーブルと条件付き更新で二重投稿を防ぎ、五分ごとの見回りで固まりと取りこぼしを回収します。プラグインでは解けない無アクセスの限界まで、正直に書きました。
Web Development

Qiita には画像アップロードの API が無かった|予約投稿プラグインで詰まって、URL 埋め込みに切り替えた話

WordPress から Qiita へ予約投稿するプラグインを自作中、画像を Qiita へ送ろうとして API が見つからず詰まりました。公開 API に画像アップロードの口はありません。WordPress メディアや Cloudflare R2 の URL を本文へ埋め込む方式へ切り替えた検証メモです。
AI

施策が効いたのか、効かなかったのかが分からない|有効インストール10未満のプラグインで、計測の前提を間違えた話

OpenRouter の無料キー導線で AI チャットボットの初回の壁を下げましたが、有効インストールは10未満のまま動きません。効かなかったのではなく、効果を語れる母数も、どこで離脱したかを知る計測も持っていませんでした。個人開発の計測設計を実体験で書きます。
AI

AI の返答を画面に出すとき、エスケープだけでは守れなかった話|DOM を直接組んで安全に表示する

AI チャットボットで、LLM の出力をエスケープしたのに画面表示ですり抜けた経験を残します。AI の出力はユーザー入力と同じ外部入力です。innerHTML の二度パースという落とし穴と、DOM を直接組んで安全に描画する WordPress での直し方をまとめます。
WordPress

プラグインが 24 時間反映されない?WordPress.org の配信保留が全プラグインに広がっていました

SVN にコミットしたプラグインが 24 時間配信されない原因は、2026 年 6 月 5 日に WordPress.org が全プラグインへ広げた配信保留です。仕様変更の経緯と、急ぐときに zip を手動アップロードして上書きする手順をまとめました。
AI

ユーザーの API キーをどこに預かるか問題|WordPress プラグインで AES-256-GCM を使った話

自作 WordPress プラグインで、ユーザーの API キーを平文で持たず AES-256-GCM で暗号化保存した実装記録です。鍵は wp-config の salts から派生させて DB の外に置き、AAD でサイトに束縛。IV と認証タグのレイアウト、復号の段階フォールバック、salts 変更時の再入力動線まで、実コードで残します。
AI

AI チャットボットを4社対応にした話|OpenAI・Claude・Gemini・OpenRouter の差を1枚の層で吸収した設計

自作 WordPress プラグインの AI チャットボットを OpenAI・Claude・Gemini・OpenRouter の4社対応にした設計記録です。認証・system の置き場所・レスポンス形・エラーを1枚の層に畳み、GPT-5 が temperature を弾く 400 を予防スキップと自動リトライで吸収した実装まで残します。
AI

Brainfuck のベンチで AI が満点を取った、けれど「8 8」で正体が割れた話|EsoLang-Bench を Codex CLI で再現して見た、カンニングと本物の境目

難解言語ベンチ EsoLang-Bench を Codex CLI(gpt-5.5)で再現し、Brainfuck の Easy を3条件で測りました。答えを見せると満点でも未知入力「8 8」で空を返すカンニング、答えを隠しても満点だが本物、Medium は全条件0%。同じ100%の中身が正反対だった記録です。
WordPress

target=”_blank” のタブナビング攻撃と rel=”noopener” の現実解【WordPress 運用視点・2026年版】

target="_blank" のタブナビング攻撃と rel="noopener" の使い分けを、WordPress 運用視点で整理しました。暗黙 noopener 時代の判断基準、WP 5.6 以降の自動付与の変遷、既存記事の一括修正と運用で踏んだ穴まで実環境ベースで解説します。
WordPress

WP AI Clientへ移行したら、エラーも出さずに会話の履歴が消えた

WordPress 7.0のWP AI Clientへプラグインを移行した実装記録です。with_history()に生配列を渡すと例外も出さず会話履歴だけが消える挙動、キーを持たないプロバイダが踏み抜いた前提、temperatureの400対応を、RC3と安定版で確認したコード付きで書いています。
タイトルとURLをコピーしました