WordPress用MySQLクエリメモ

WordPress

基礎からのMySQL [基礎からのシリーズ] (プログラマの種シリーズ)

ブログの引っ越しやプラグイン変更などで、WordPressが管理するデータを一括編集したい時、phpMyAdminを使ってMySQLクエリを発行すると便利です。

ここでは、私が実際に活用したMySQLクエリを紹介すると言う名目で、自分用メモを残しておきます。

クエリの使い方

phpMyAdminを開き、該当データベース選択します。

「クエリ」タブを開き、「データベース xxx のSQL:」欄にコマンドを入力して実行してください。

クエリ例

ここでは一括変更したいと思った理由と、その解決方法をメモっていきます。

目的

SyntaxHighlighter プラグインの乗り換え時、コード指定をHTML→htmlのように、アルファベット大文字から小文字に変更する必要がありました。

しかし、コード指定が複数種類ある上に、変更する記事が複数に渡るため、手動で検索・変更するのは大変です。

そこでMySQLクエリを活用しました。

どんなタグを使っているのか調べる

どんなタグを使っているのか調べる為、以下のクエリを発行します。

これによりWordPressの記事本文中から、[]で括られた大文字アルファベットの連続を含む記事が抽出されます。

SELECT *  FROM `wp_posts` WHERE `post_content` REGEXP '\\[[A-Z]+\\]'

[DVD]を除いて再抽出

抽出された記事を確認したところ、Amazonアフィリエイトリンクで[DVD]と言う単語を使ってる記事まで引っかかってしまいました。

上記クエリを修正し、[DVD]を除いて抽出を行います。

SELECT *  FROM `wp_posts` WHERE (BINARY post_content REGEXP '\[[[:upper:]]\]' AND BINARY post_content not like '%DVD%')

[CSS]タグを置き換える

抽出された記事を確認したところ、殆どが"CSS"タグで、他のタグはごく少数でした。

数の多いCSSはクエリで一括置換し、その他は手動で修正することにします。

WordPressの記事本文中から、[CSS]を探しアルファベット小文字に置き換えるには、以下のクエリを発行します。

UPDATE wp_posts SET post_content=REPLACE(post_content,"[CSS]","[css]");

WordPressの記事本文中から、[/CSS]を探し、[/css]に置き換えるには以下のクエリを発行します。

UPDATE wp_posts SET post_content=REPLACE(post_content,"[/CSS]","[/css]");

クエリ例2

記事毎のPVを表示するプラグインを外したので、該当プラグインが使用していたデータを削除します。

phpMyAdminでデータベースを調べたところ、wp_postmeta の “views" が該当するようです。

念のため、viewsだけ抽出して内容に間違いがないか確認します。

select * from wp_postmeta WHERE `meta_key` = 'views'

目視で間違いなく不要なデータであることを確認したので、’views’を一括して削除します。

DELETE FROM `wp`.`wp_postmeta` WHERE `meta_key` = 'views'