WordPressで使える知ってると便利な13のSQL文


wordpress-org
WordPressでデータベースの情報を変更する際に便利なTipsが載っている13 Useful WordPress SQL Queries You Wish You Knew Earlierというエントリーのご紹介。

WordPressはMySQLというデータベースで動いていますが、何かを変更したい場合に結構困る事があります。

IT/WEB業界への転職なら求人サイトGreen

例えば
・パスワードを忘れて管理用のメールアドレスも忘れた場合
・テスト用にレンタルサーバーのサブドメインで動かしていて、いざ本ドメインで表示されるよう設定してもサブドメインにリダイレクトされるとか。画像がでない。とか。

全ての情報がデータベースに格納されているためしょうが無い部分もあるのですが、困った時に知っておくと便利なTipsです。
※必ずバックアップを取ってから実行してください。

サイトのURLを変更する

ワードプレスはサイトのURLとホームのURLを絶対パスで持っています。
そのため、例えばlocalhostのデータを直接サーバーのデータベースに引越した場合、localhostにリダイレクトされてしまいます。

以下のSQLを発行する事で解決可能です。

UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldsiteurl.com', 'http://www.newsiteurl.com') WHERE option_name = 'home' OR option_name = 'siteurl';

GUIDを変更する

ドメインを変更してサイトを表示しても、まだ画面のレイアウトが崩れてしまいます。WordPressの設定を指定のドメイン用に最適化します。

UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.oldsiteurl.com', 'http://www.newsiteurl.com');

投稿内のURLを変更する

投稿した記事の中のリンクは全て絶対パスで書かれています。リンク先を新しいドメインに指定します。

UPDATE wp_posts SET post_content = REPLACE  (post_content, 'http://www.oldsiteurl.com', 'http://www.newsiteurl.com');

画像のパスを変更する

画像ファイルへのパスなどが絶対パスで入力されているはずです。全てのパスを新しいドメインに変更します。

UPDATE wp_posts SET post_content = REPLACE (post_content, 'src="http://www.oldsiteurl.com', 'src="http://yourcdn.newsiteurl.com');
UPDATE wp_posts SET  guid = REPLACE (guid, 'http://www.oldsiteurl.com', 'http://yourcdn.newsiteurl.com') WHERE post_type = 'attachment';

Metaを変更

各投稿のMetaにも絶対パスがあります。こちらも変更しましょう。

UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://www.oldsiteurl.com','http://www.newsiteurl.com');

デフォルトのユーザー名である「admin」を変更する

初期設定ではadminというユーザー名はWordPressの管理者に設定されているため、そのままにしておくのはセキュリティ的にあまり良くありません。
このユーザー名を変更します。

UPDATE wp_users SET user_login = '新しいユーザー名' WHERE user_login = 'Admin';

パスワードのリセット

管理者のパスワードを忘れた場合、変更にはメールを受け取る必要がありますがそのメールも受け取れない場合に直接DBの値を変更して新しいパスワードを設定します。

UPDATE wp_users SET user_pass = MD5( 'new_password' ) WHERE user_login = 'your-username';

投稿者を変更する

記事の投稿したユーザーを一括で変更します。

UPDATE wp_posts SET post_author = 'new-author-id' WHERE post_author = 'old-author-id';

リビジョンを削除する

WordPressは記事のバージョンが管理されているため、編集前のデータが残っています。
この不必要なデータを削除する方法です。

DELETE a,b,c FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision'

不要なMetaを削除

metaデータにはテスト時の不要なデータがある場合があるので、不要なデータが分かっている場合は削除します。

DELETE FROM wp_postmeta WHERE meta_key = 'your-meta-key';

コメント投稿者のメールアドレスを抽出する

全てのコメント投稿者のメールアドレスを取得します。

SELECT DISTINCT  comment_author_email FROM wp_comments;

トラックバックを削除

全てのトラックバックを削除してデータサイズを軽くできます。

DELETE FROM  wp_comments WHERE  comment_type = 'pingback';

スパムコメントを削除する

スパムコメントはかなりのデータになりますよね。これを全て削除します。

DELETE FROM  wp_comments WHERE  comment_approved = 'spam';
  • 0 =承認待ちコメント
  • 1 = 承認済みコメント
  • spam = スパムコメント

未使用のタグを削除

使用していないタグを削除します。

SELECT * FROM wp_terms wt
INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id
INNER JOIN wp_term_relationships wtr ON wtr.term_taxonomy_id=wtt.term_taxonomy_id
LEFT JOIN wp_posts wp ON wp.ID=wtr.object_id
WHERE taxonomy='post_tag'
AND ID IS null
AND NOT EXISTS(SELECT * From wp_terms wt2
                INNER JOIN wp_term_taxonomy wtt2 ON wt2.term_id=wtt2.term_id WHERE wtt2.parent=wt.term_id) ORDER BY name;

以上です。データベースの扱いにはくれぐれも気をつけてください。

 

この記事が気に入ったら
いいね!しよう

最新情報をお届けします

follow us in feedly