日本語がエンコードされた形(例: single-post-q-wordpress%e3%81%a7%e3%83%86…)で保存されたテンプレートや投稿が、WordPress管理画面で削除できない。削除を試みると以下のようなエラーが発生する:
- エラーメッセージ: 「保存しました」「返答が正しい JSON レスポンスではありません」
原因
テンプレートや投稿名がURLエンコードされて保存されている。
WordPressの管理画面やバックエンドで、文字化けしたエンコード名を正しく処理できないため、削除操作が失敗する。
解決方法
1. Adminer for WP を使用して削除
- プラグインのインストール
WordPress管理画面で「プラグイン」→「新規追加」に移動。
- Adminer for WP を検索し、インストールして有効化。
- Adminer にアクセス
WordPress管理画面の「Adminer」メニューにアクセス。
データベース操作画面が表示される。
- 該当データを検索
「検索」機能で、エンコードされたテンプレート名の一部(例: single-post-q-wordpress)や文字列 % を含むデータを検索。
- 該当レコードを削除
検索結果から該当するレコードを特定。
問題のレコードを削除。
2. 手動SQLクエリを使用
phpMyAdminやAdminerで以下のSQLクエリを実行して直接削除します。
sql
コードをコピーする
DELETE FROM wp_posts WHERE post_type = ‘wp_template’ AND post_name LIKE ‘%single-post-q-wordpress%’;
3. キャッシュのクリア
データベース操作後、WordPressのキャッシュをクリアします。
キャッシュプラグイン(例: W3 Total Cache)を使用している場合、キャッシュをクリア。
サーバーキャッシュ(例: LiteSpeed Cache)がある場合も削除を実行。
補足情報
- なぜAdminerが有効なのか
Adminer for WP は、WordPress管理画面内で直接データベースにアクセスできるため、phpMyAdminが使えない環境や管理画面操作で問題が解決できない場合に非常に有効です。
- 注意点
データベース操作前には必ずバックアップを取得してください。
検索や削除対象のデータを慎重に確認し、必要なものを誤って削除しないようにしてください。
まとめ
日本語がエンコードされた形で保存されたテンプレートや投稿は、WordPressの通常操作では削除が難しい場合があります。このような場合は、Adminer for WP を使用してデータベースから直接削除する方法が効果的です。
この方法を実行すれば、削除できないオブジェクトを正確に処理でき、エラーも解消されます。