[WordPress] カテゴリを管理画面から編集できなかったのでデータベースを更新して解決した

当サイトは WordPress で運営しているのですが、特定のカテゴリを管理画面から編集できないという問題が発生しました。

WordPress | ワードプレス

WordPress 管理画面で「間違えましたか ? この項目を編集する権限がありません。」というエラーメッセージが表示されてカテゴリを編集できなかったので、MySQL データベースの値を直接更新して解決するまでの手順をご紹介します。

WordPress 管理画面「間違えましたか ? この項目を編集する権限がありません。」

WordPress の管理画面から Amazon カテゴリを編集しようとしたら「間違えましたか ? この項目を編集する権限がありません。」というメッセージが表示されて、更新することができませんでした。

WordPress カテゴリをデータベースから手動更新する手順

今回 WordPress 管理画面からカテゴリを編集できないので、データベース MySQL に保存している値を直接編集していきます。

カテゴリのデータは wp_terms テーブルに保存されている

まず、WordPress のカテゴリのデータがどこに保存されているか確認します。

WordPress はカテゴリ、タグのいずれも wp_terms テーブルに保存されているので、この値を確認していきます。

wp_terms 投稿およびリンクの分類(カテゴリ・タグ)に使われる語句の基本情報を格納

wp_terms テーブルの確認

今回は、カテゴリ名 wp_terms.name が Amazon でスラッグ名 wp_terms.slug が amazon のレコードを、カテゴリ名 Amazon Web Services かつ、スラッグ名 aws へ変更するという作業をします。

mysql> SELECT * FROM wp_terms WHERE name LIKE 'aws%';
+---------+---------+---------+------------+------------+
| term_id | name    | slug    | term_group | term_order |
+---------+---------+---------+------------+------------+
|     375 | aws-cli | aws-cli |          0 |          0 |
|     391 | AWS     | aws-2   |          0 |          0 |
+---------+---------+---------+------------+------------+
2 rows in set (0.00 sec)

SQL で確認してみると aws-2 というタグがあったので、今回の作業には直接関係ないのですが重複ページになってしまい SEO の観点で悪影響なので WordPress 管理画面から削除しました。

次に amazon という文字列を含むカテゴリ名の wp_terms レコードを確認します。

mysql> SELECT * FROM wp_terms WHERE name LIKE 'amazon%';
+---------+---------------------+---------------------+------------+------------+
| term_id | name                | slug                | term_group | term_order |
+---------+---------------------+---------------------+------------+------------+
|       9 | Amazon              | amazon              |          0 |          0 |
|     120 | Amazon EC2          | ec2                 |          0 |          0 |
|     121 | Amazon S3           | s3                  |          0 |          0 |
|     144 | Amazon SES          | amazon-ses          |          0 |          0 |
|     258 | Amazon Appstore     | amazon-appstore     |          0 |          0 |
|     360 | amazon s3           | amazon-s3           |          0 |          0 |
|     891 | amazon payment      | amazon-payment      |          0 |          0 |
+---------+---------------------+---------------------+------------+------------+
7 rows in set (0.01 sec)

prefix に amazon- が有り・無しと表記ゆれが気になりますね。これも本件とは関係ないですが別途どちらかに統一するケアをしたいと思います。

wp_terms テーブルのカテゴリ名、スラッグを更新

特定のカテゴリ term_id = 9 を指定して、wp_terms テーブルの値を更新します。

mysql> UPDATE wp_terms SET name = 'Amazon Web Services', slug = 'aws' WHERE term_id = 9;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

以上、WordPress のカテゴリを管理画面から編集できなくて、MySQL データベースを直接 update して解決したお話でした。