MySQLを操作してWordPressのコメント欄をクローズする

WordPressでコメント欄を無効化したいなと思っていろいろ調べたところ、コメント欄の有効無効設定は記事ごとにやらなければならないという大変面倒な結論が得られました。

今回設定変更したかったWordPressサイトのデータは対象記事数が1500を超えていて、手動でやるとか面倒で面倒で。。。

コメント設定画面

そこでMySQLを直接操作ですよ!

WordPressのデータはMySQLで管理されていますね。ということは直接データベースをいじって一発設定変更できるんじゃないかな。

テーブルのリストを確認。

mysql> USE wp_data;
Database changed
mysql> SHOW TABLES;
+-----------------------+
| Tables_in_wp          |
+-----------------------+
| wp_commentmeta        |
| wp_comments           |
| wp_links              |
| wp_options            |
| wp_postmeta           |
| wp_posts              |
| wp_term_relationships |
| wp_term_taxonomy      |
| wp_termmeta           |
| wp_terms              |
| wp_user_login_log     |
| wp_usermeta           |
| wp_users              |
+-----------------------+
13 rows in set (0.00 sec)

多分テーブル名はwp_postsなんでしょうね。中身を見てみましょう。

mysql> DESC wp_posts;
+-----------------------+---------------------+------+-----+---------------------+----------------+
| Field                 | Type                | Null | Key | Default             | Extra          |
+-----------------------+---------------------+------+-----+---------------------+----------------+
| ID                    | bigint(20) unsigned | NO   | PRI | NULL                | auto_increment |
| post_author           | bigint(20) unsigned | NO   | MUL | 0                   |                |
| post_date             | datetime            | NO   |     | 0000-00-00 00:00:00 |                |
| post_date_gmt         | datetime            | NO   |     | 0000-00-00 00:00:00 |                |
| post_content          | longtext            | NO   |     | NULL                |                |
| post_title            | text                | NO   |     | NULL                |                |
| post_excerpt          | text                | NO   |     | NULL                |                |
| post_status           | varchar(20)         | NO   |     | publish             |                |
| comment_status        | varchar(20)         | NO   |     | open                |                |
| ping_status           | varchar(20)         | NO   |     | open                |                |
| post_password         | varchar(255)        | NO   |     |                     |                |
| post_name             | varchar(200)        | NO   | MUL |                     |                |
| to_ping               | text                | NO   |     | NULL                |                |
| pinged                | text                | NO   |     | NULL                |                |
| post_modified         | datetime            | NO   |     | 0000-00-00 00:00:00 |                |
| post_modified_gmt     | datetime            | NO   |     | 0000-00-00 00:00:00 |                |
| post_content_filtered | longtext            | NO   |     | NULL                |                |
| post_parent           | bigint(20) unsigned | NO   | MUL | 0                   |                |
| guid                  | varchar(255)        | NO   |     |                     |                |
| menu_order            | int(11)             | NO   |     | 0                   |                |
| post_type             | varchar(20)         | NO   | MUL | post                |                |
| post_mime_type        | varchar(100)        | NO   |     |                     |                |
| comment_count         | bigint(20)          | NO   |     | 0                   |                |
+-----------------------+---------------------+------+-----+---------------------+----------------+
23 rows in set (0.00 sec)

comment_statusがクサい。一覧を表示してみます。

mysql> SELECT comment_status from wp_posts;
+----------------+
| comment_status |
+----------------+
| closed         |
| closed         |

〜中略〜

| open           |
| open           |
+----------------+
1527 rows in set (0.00 sec)

途中まで手作業でコメント欄を無効にした記事があったので、有効がopen、無効がclosedということがわかりました。では一気に書き換えましょう!

mysql> UPDATE wp_posts SET comment_status = REPLACE(comment_status, "open", "closed") WHERE comment_status = 'open';
Query OK, 1527 rows affected (0.06 sec)
Rows matched: 1527  Changed: 1527  Warnings: 0

らくちん!