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

その後、前回の間違いと原因が分かったので、再度試してまとめる。

[markdown]
> * [WordPress: MySQL を使って、Markdown on Save Improved の設定状態を確認する(1) | deadwood](https://www.d-wood.com/blog/2014/01/16_5276.html)
> * [WordPress: MySQL を使って、Markdown on Save Improved の設定状態を確認する(2) | deadwood](https://www.d-wood.com/blog/2014/01/17_5278.html)

## BackWPup のDB最適化タスクが原因

WordPress の BackWPup プラグインのバックアップジョブに、DB最適化の設定がされていたため。

2014-02-11_BackWPup_02

メニューの `jobs` から、該当ジョブを編集して、DB 関連のタスクを外しました。

2014-02-11_BackWPup_01

これで再発しないはず。

## DBの内容を拾い直して、SQL を改善する

前回作ってみたチェック用のSQLでは拾いきれないよう。
素人なりにいろいろ試して、改善してみます。

### post_status が公開済か予約済

チェックすべきは、下記の2つ。

* ‘publish’ – 投稿やページが公開済み
* ‘future’ – 公開予約済み

> * [Post Status Transitions – WordPress Codex 日本語版](http://wpdocs.sourceforge.jp/Post_Status_Transitions)

### Markdown on Save Improved の設定状態

`meta_key=’_sd_is_markdown’` の `meta_value` の値を確認する。

* `”` – default, GitHub Flavored Markdown for WordPress (管理画面チェック有、値は null)
* `1` – Markdown on Save Improved (管理画面チェック無、値は 1)

`1` が入っていれば、Markdown on Save Improved を利用している状態にある。

## 修正した SQL

以下で、markdown on save improved を動かしたことのある投稿を洗い出せる。

“`sql
SELECT id,meta_value FROM wp_posts LEFT JOIN wp_postmeta ON wp_posts.id=wp_postmeta.post_id
WHERE post_status IN (‘publish’,’future’) AND post_type=’post’ AND meta_key=’_sd_is_markdown’;
“`

あとは、それぞれのプラグイン利用状況に対応する不正な値の条件を追加する。

### 追加する条件

※ WordPressへの掲載の都合上、ショートコードとぶつかる大括弧は、全角[]に置き換えています。
GitHub Flavored Markdown for WordPress を利用した投稿でエラー

“`sql
AND post_content LIKE ‘%[/markdown]%’
AND meta_value=1;
“`

markdown on save improved を利用した投稿でエラー

“`sql
AND post_content_filtered!=” AND post_content NOT LIKE ‘%[/markdown]%’
AND meta_value=”;
“`

通常の投稿でエラー

“`sql
AND post_content_filtered=” AND post_content NOT LIKE ‘%[/markdown]%’
AND meta_value=1;
“`
[/markdown]