2026年5月20日
2026年5月20日
WordPressの設定画面で「変更を保存できません」が出る場合の解決方法
はじめに
WordPressの設定画面(一般・表示・ディスカッションなど)で「変更を保存できません」または「申し訳ありませんが、このフォームの送信は許可されていません」と表示されることがあります。保存できない原因は主にnonceの問題・ユーザー権限・セキュリティプラグインのブロックの3つです。
症状・原因
- 「申し訳ありませんが、このフォームの送信は許可されていません」:nonceの検証失敗
- 保存後にリダイレクトが繰り返される:URLがHTTP/HTTPSで不一致
- 設定画面が白い画面になる:PHPエラーまたはメモリ不足
- 一部の設定だけ保存されない:
sanitize_optionフィルタのバリデーション失敗
解決手順
ステップ1:キャッシュとCookieをクリア
まずブラウザのキャッシュとCookieを削除してから再試行します。nonceはセッションに紐づくため、古いCookieが残っていると検証に失敗します。
# WordPressのオプションキャッシュもクリア
wp cache flush
ステップ2:ユーザー権限を確認
設定を保存できるのは manage_options 権限を持つユーザーのみです。
// 現在のユーザーが権限を持つか確認
if ( current_user_can('manage_options') ) {
// 設定保存処理
}
管理者アカウントで再ログインし、ユーザーの役割が「管理者」になっているか確認してください。
ステップ3:プラグインを無効化してテスト
セキュリティプラグイン(Wordfence・Sucuri)やキャッシュプラグインがフォーム送信をブロックしている場合があります。
# すべてのプラグインを一時無効化
wp plugin deactivate --all
プラグインを無効化して保存できた場合は、1つずつ有効化して原因を特定します。
ステップ4:.htaccessを確認
mod_securityやカスタムルールがPOSTリクエストをブロックしていることがあります。
# .htaccess に追加(一時的なテスト用)
<FilesMatch "options.php">
SecFilterEngine Off
</FilesMatch>
根本解決はmod_securityのルール調整をサーバー管理者に依頼するか、VPSであれば該当ルールを無効化します。
ステップ5:wp-config.phpのURL設定を確認
// サイトURLが一致しているか確認
define('WP_HOME', 'https://example.com');
define('WP_SITEURL', 'https://example.com');
HTTPとHTTPSが混在するとリファラーチェックが失敗し、nonce検証が通りません。
ステップ6:functions.phpでnonceの寿命を延長(応急処置)
// nonce有効期間をデフォルト24時間から延長
add_filter('nonce_life', function() {
return 48 * HOUR_IN_SECONDS;
});
これは応急処置です。根本原因(サーバー時刻のずれなど)を別途確認してください。
注意事項
DISALLOW_FILE_MODS=trueの場合、プラグイン・テーマの更新設定は保存できません(仕様)- サーバー時刻がずれていると nonce の有効期限判定がおかしくなります(
dateコマンドで確認) - バックアップなしに .htaccess を編集するとサイトがダウンする場合があります
まとめ
設定保存エラーは、まずキャッシュ・Cookie削除 → 権限確認 → プラグイン無効化の順で切り分けます。セキュリティプラグインが原因の場合は該当ルールのホワイトリスト設定で解決できます。