修正
設定の内部書き込みでデータが壊れる問題を修正
register_setting() に渡した sanitize_callback は sanitize_option_{$option} フィルタとして登録されるため、フォーム送信時だけでなく update_option() のたびに実行されます。
sanitize_settings() はフォーム送信を前提に書かれていたため、update_settings() 経由の内部書き込みにも同じ加工が適用され、以下の3つの不具合が発生していました。
- シェアログが保存されない —
log_entriesを書き込み前のDB値で上書きしていたため、投稿の成否にかかわらずログが常に空のままだった - 認証情報が二重暗号化される — 暗号化済みの
client_secret/api_secret/access_token_secretに再度encrypt()が適用され、保存のたびに暗号化が積み重なって復号できなくなっていた(X API が 401 Unauthorized を返す原因) - OAuth 2.0 のトークンが保存されない —
oauth2_access_token/oauth2_refresh_token/oauth2_token_expires/connected_usernameが書き込み前の値に巻き戻され、アカウント接続が完了しなかった
update_settings() 実行中は内部書き込みフラグを立て、sanitize_settings() 側でそれを検出してサニタイズを素通しするよう修正しました。
アップグレード時の注意
1.1.0 以前で「接続テスト投稿」や自動シェアを実行した環境では、保存済みの API Secret と Access Token Secret が二重暗号化されている可能性があります。更新後、設定画面で認証情報を入力し直してください。
その他
- 開発ガイドライン(CLAUDE.md)と WordPress プラグイン開発用スキルを追加