この投稿は6年半前の記事です。 情報が古くなっている可能性があるので、その点ご了承ください。
2010 年 4 月 19 日 2,537日前)
2,347文字 (読了時間5分)

SPONSORED LINK

WordPressに限らず、ブログやCMSを運営している人はローカル環境と本番環境を持っていたりすると思います。

で、大体サーバ上にあるデータをFTPでローカルに落として来て環境を反映させたりするのですが、DB内に記述されている画像ファイルやらリンクやらが書き変わってしまうのが困りもの。

たとえばhttp://example.jpで運営しているサイトのデータベースをローカルに落として来た時、画像がリンク切れを起こしたりするんですね。

これはとても困るので、いつもSQL文をデータベースに発行して書き換えたりするんですが、普段あんまりSQLを書かないので、すぐ忘れてしまいます。

phpMyAdminでSQLを発行するには
phpMyAdminでSQLを発行するには「SQL」ボタンを押す

PHPerにはSQLを覚えていない人って結構多いんじゃないですかね。普段の開発ではそんなに書かなくてもなんとかなっちゃいますからね。

というわけで、とりあえず発行しておくといいSQLはこちらです。

http://example.jp でブログを運営している人が、 http://localhost の開発環境にデータを移す場面を想像して書いてみました。

phpMyAdminとかでデータベースを選択したら、「SQL」を押して発行するといいと思います。

UPDATE `wp_options` SET option_value = REPLACE(option_value, "http://example.jp","http://localhost");
UPDATE `wp_posts` SET post_content = REPLACE(post_content, "http://example.jp","http://localhost"), guid = REPLACE(guid, "http://example.jp","http://localhost");
UPDATE `wp_links` SET link_image = REPLACE(link_image, "http://example.jp","http://localhost"), link_url = REPLACE(link_url, "http://example.jp","http://localhost");

と、紹介しておきながらふと思ったんですが、これって簡単に書けそうですね。

書いてみました。

<?php
	require_once dirname(__FILE__).DIRECTORY_SEPARATOR."wp-load.php";
	$old_url = get_bloginfo("url");
	$new_url = "http://localhost"; //←適宜書き換えてください。末尾のスラッシュの有無に注意!
	
	$sql = array(
	                    "UPDATE `{$table_prefix}options` SET option_value = REPLACE(option_value, '{$old_url}','{$new_url}')",
	                    "UPDATE `{$table_prefix}posts` SET post_content = REPLACE(post_content, '{$old_url}','{$new_url}'), guid = REPLACE(guid, '{$old_url}','{$new_url}')",
	                    "UPDATE `{$table_prefix}links` SET link_image = REPLACE(link_image, '{$old_url}','{$new_url}'), link_url = REPLACE(link_url, '{$old_url}','{$new_url}')"
	                    );
	foreach($sql as $s){
		$wpdb->query($s);
	}
?>

上記のファイルをWordPressのルートフォルダに置いて、ブラウザからアクセスするとたぶん置換できると思います。

ただし、完全に思いつきで書いたので、ダメでも苦情はナシでお願いします。基本的にローカルの開発環境を想定していますので、サーバに上げたりして飛んでもないことが起きても知りませんよ。

ところで、最近WordPressでサイトを作っていて思うのは、管理画面をハードにカスタマイズする案件が面倒だなと思います。

ちょっと工夫すれば管理画面ジェネレータを作れそうな気がしてるんですが、需要はあるのかな。

あと、yumとかMacportみたいにプラグイン同士の依存を解決する仕組みも欲しいですね。「このプラグインはプラグインAがインストールされていなければ使用できません。インストールしますか?」みたいな。

破滅派も会社になるので、そういうサービスを提供することを考えておいた方がいいんでしょうか。うーむ。

 

フォローしてください

ここで会ったのもなにかの縁。
高橋文樹.comの最新情報を見逃さないためにもフォローをお願いします。
めったに送らないメルマガもあります。

SPONSORED LINK

この記事について

この記事はが2010 年 4 月 19 日にプログラミングの記事として公開しました。

高橋先生の電子書籍

高橋先生の電子書籍

Amazonで電子書籍も買えます。

好きな言葉

私にはポルノの定義はできないが、見ればわかる。

— ジャレド・ダイアモンド

高橋先生の処女作

『途中下車』高橋文樹

2001年幻冬舎NET学生文学大賞受賞作です。

Web制作やります

Web制作やります

Web制作のご依頼は株式会社破滅派へ

不定期メルマガ

高橋文樹.comでは、不定期でニュースレターを配信しています。滅多に送らないので是非購読してください。

高橋文樹.comではプライバシーポリシーに準じて登録情報を取り扱います。