[WP Plugin] MySQL を使って、Markdown on Save Improved の設定状態を確認する(2)

続きです。

間違いなどありましたら、ぜひコメント下さい。

※ WordPressへの掲載の都合上、ショートコードとぶつかる大括弧は、全角[]に置き換えています。

前回のまとめ

wp_postmetameta_key: _sd_is_markdownmeta_value: に、適切な値を入れる。

正常値

  • '' (チェック有) – default, gfm
  • 1 (チェック無) – osi

エントリーの確認

default

チェック有。プラグインなしのHTMLエントリー。

markdown-on-save-improved (以下、osi)

チェック無。Markdown。

GitHub Flavored Markdown for WordPress (以下、gfm)

チェック有。Markdown。[markdown] タグが content に含まれている。

追加調査

こんな形で探してみます。

> select * from wp_posts where post_type = 'post' and post_status = 'publish' order by rand() limit 1 \G
> select * from wp_postmeta where post_id = 4234 \G

* `meta_key: _sd_is_markdown` がない投稿もある。おそらく導入後にチェックなしの状態で保存をしていない投稿。
## 対象を確認する
全件数を確認。
```sql
> select count(*) from wp_posts where post_type = 'post' and post_status = 'publish';
+----------+
| count(*) |
+----------+
|      261 |
+----------+

```sql:meta_key='_sd_is_markdown'を持つエントリ数
> SELECT count(*) FROM wp_posts LEFT JOIN wp_postmeta ON wp_posts.id = wp_postmeta.post_id WHERE post_type = 'post' AND post_status = 'publish' AND meta_key = '_sd_is_markdown';
+----------+
| count(*) |
+----------+
| 207 |
+----------+

### default
```sql
> select count(*) from wp_posts where post_type = 'post' and post_status = 'publish' and post_content_filtered = '' and post_content not like '%[/markdown]%';
+----------+
| count(*) |
+----------+
|       71 |
+----------+

```sql:meta_key='_sd_is_markdown'を持つエントリ数
> SELECT count(*) FROM wp_posts LEFT JOIN wp_postmeta ON wp_posts.id = wp_postmeta.post_id WHERE post_type = 'post' AND post_status = 'publish' AND post_content_filtered = '' AND post_content NOT LIKE '%[/markdown]%' AND meta_key = '_sd_is_markdown';
+----------+
| count(*) |
+----------+
| 17 |
+----------+

正常値
* `''` (チェック有) - default, gfm
* `1` (チェック無) - osi
```sql:異常値をもつエントリ数
> SELECT count(*) FROM wp_posts LEFT JOIN wp_postmeta ON wp_posts.id = wp_postmeta.post_id WHERE post_type = 'post' AND post_status = 'publish' AND post_content_filtered = '' AND post_content NOT LIKE '%[/markdown]%' AND meta_key = '_sd_is_markdown' AND meta_value = 1;
+----------+
| count(*) |
+----------+
|        0 |
+----------+

### markdown on save improved を使っているエントリ

> select count(*) from wp_posts where post_type = 'post' and post_status = 'publish' and post_content_filtered != '' and post_content not like '%[/markdown]%';
+----------+
| count(*) |
+----------+
|       87 |
+----------+

```sql:meta_key='_sd_is_markdown'を持つエントリ数
> SELECT count(*) FROM wp_posts LEFT JOIN wp_postmeta ON wp_posts.id = wp_postmeta.post_id WHERE post_type = 'post' AND post_status = 'publish' AND post_content_filtered != '' AND post_content NOT LIKE '%[/markdown]%' AND meta_key = '_sd_is_markdown';
+----------+
| count(*) |
+----------+
| 87 |
+----------+

正常値
* `''` (チェック有) - default, gfm
* `1` (チェック無) - osi
```sql:異常値をもつエントリ数
> SELECT count(*) FROM wp_posts LEFT JOIN wp_postmeta ON wp_posts.id = wp_postmeta.post_id WHERE post_type = 'post' AND post_status = 'publish' AND post_content_filtered != '' AND post_content NOT LIKE '%[/markdown]%' AND meta_key = '_sd_is_markdown' AND meta_value = '';
+----------+
| count(*) |
+----------+
|        0 |
+----------+

### wp-gfm

> select count(*) from wp_posts where post_type = 'post' and post_status = 'publish' and post_content like '%[/markdown]%';
+----------+
| count(*) |
+----------+
|      103 |
+----------+

```sql:meta_key='_sd_is_markdown'を持つエントリ数
> SELECT count(*) FROM wp_posts LEFT JOIN wp_postmeta ON wp_posts.id = wp_postmeta.post_id WHERE post_type = 'post' AND post_status = 'publish' AND post_content LIKE '%[/markdown]%' AND meta_key = '_sd_is_markdown';
+----------+
| count(*) |
+----------+
| 103 |
+----------+

正常値
* `''` (チェック有) - default, gfm
* `1` (チェック無) - osi
```sql:異常値をもつエントリ数
> SELECT count(*) FROM wp_posts LEFT JOIN wp_postmeta ON wp_posts.id = wp_postmeta.post_id WHERE post_type = 'post' AND post_status = 'publish' AND post_content LIKE '%[/markdown]%' AND meta_key = '_sd_is_markdown' AND meta_value = 1;
+----------+
| count(*) |
+----------+
|        2 |
+----------+

## 修正
対象を確認した結果、意外と少ない2件でした。
その id を調べます。

> SELECT wp_posts.id FROM wp_posts LEFT JOIN wp_postmeta ON wp_posts.id = wp_postmeta.post_id WHERE post_type = 'post' AND post_status = 'publish' AND post_content LIKE '%[/markdown]%' AND meta_key = '_sd_is_markdown' AND meta_value = 1;
+------+
| id   |
+------+
| 4994 |
| 5100 |
+------+

該当 ID を update する。

> SELECT * FROM wp_postmeta WHERE meta_key = '_sd_is_markdown' AND post_id = 5100;
+---------+---------+-----------------+------------+
| meta_id | post_id | meta_key        | meta_value |
+---------+---------+-----------------+------------+
|   32363 |    5100 | _sd_is_markdown | 1          |
+---------+---------+-----------------+------------+

UPDATE wp_postmeta SET meta_value = ” WHERE meta_key = ‘_sd_is_markdown’ AND post_id = 5100;

```sql
> SELECT * FROM wp_postmeta WHERE meta_key = '_sd_is_markdown' AND post_id = 5100;
+---------+---------+-----------------+------------+
| meta_id | post_id | meta_key        | meta_value |
+---------+---------+-----------------+------------+
|   32363 |    5100 | _sd_is_markdown |            |
+---------+---------+-----------------+------------+

meta_value を書き換えると、markdown が HTML に変換される? or HTML に変換されていたから表示が乱れたのか?
表示は乱れたまま。
管理画面のリビジョン機能からバージョンを戻し、手動で保存し直して復旧させた。