2008 年 11 月 のアーカイブ

mtからwpへの移行

2008 年 11 月 21 日 金曜日

ここ最近、2つのブログをmtからwpへ移行しました。
いろいろと情報を集め、実際に試してみた結果を残しておきます。

まず最初に参考にしたページがここ。
http://apps.tpot.tk/web:wordpress

最初は「全ページを完璧に移行する。パーマリンクもmtとまったく同じにするぞ!」と意気込んでおり、このページを参考に完璧な移行を目指しました。

が、すぐに挫折。

まず、このページで扱っているmtとwpがちょっとバージョン古めみたいで、ソースコードがけっこう違っていました。
それでも頑張ればなんとかなるだろうと思っていろいろ試したんですが、やっぱりソースをガリガリいじるのは正直シンドイです。しかもmtとwp両方となるとなかなか。。

というわけで、100点満点でなく60~80点くらいを目指す方向へとシフトしました。

続いて参考にしたページがこちら。
http://netscrander.com/archives/mt_to_wp.php

mtのテンプレートでWXR(WordPress eXtended RSS)という、WordPressのブログ移行用のデータを作成するというやり方。
なるほど、この発想はなかったです。というかWXRの存在自体を知りませんでした。

さっそく上記のサイトからテンプレートを取得してmtでWXRを出版。テスト環境のwpにデータを取り込んでみましたが、なかなかいい感じ。コメントやトラックバックもしっかり移行できてます。
カテゴリの階層構造が移行できないといった問題もありましたが、数がそんなに多くなかったのでインポート後に手動で再設定しました。

そんな感じでトライアンドエラーを繰り返しつつ、最終的にこのやり方でデータの移行を完了しました。

最後に、これは自分のオリジナルなんですが、mtで出版したHTMLからwpの記事へリダイレクトする方法を紹介します。

まずはmtでWXRを作成する際、こんな感じでmtの記事IDをカスタムフィールドに入れます。


<wp:postmeta>
<wp:meta_key>mt_entry_id</wp:meta_key>
<wp:meta_value><$MTEntryID$></wp:meta_value>
</wp:postmeta>

そしてデータ移行が完了したら、wpのMySQLで以下のSQLを実行します。

SELECT meta_value , ' => ' , post_id , ',' FROM wp_postmeta WHERE meta_key LIKE 'mt_entry_id';

SQLで抽出したデータをこんな風にphpの変数にして、mt_wp_map.phpとか適当な名前を付けてサーバーに保存。


<?php
$mt_wp_map = array(
1234 => 4 ,
1235 => 5 ,
1236 => 6 ,
1237 => 7 ,
1238 => 8 ,
1239 => 9 ,
...
);
?>

そしてmtの記事ページテンプレートを以下のようにします。


<?php
require("/path/to/mt_wp_map.php");
$wp_post_id = $mt_wp_map[<$MTEntryID$>];
if($wp_post_id)
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: /path/to/wp/?p=$wp_post_id");
exit;
}
?>

あとはページを再構築すれば全記事ページからwpへリダイレクトされるようになります。

できればカテゴリページや月別アーカイブページもリダイレクトさせたいんですが、面倒なので対応しませんでした。
カテゴリページなどは数が多くなければ手作業でやっちゃったほうが早いかもしれません。

以上でデータ移行完了。テーマのカスタマイズについては今回は割愛します。

他にもっといいやり方もあるような気がしますが、とりあえずこれで無事移行できたので満足しています。

mtからwpへの移行はいい勉強になりますので、それなりに程度時間をかけて取り組む価値があると思いました。
今回紹介した方法以外にもバージョンや運用形態によってそれぞれ適した移行方法があると思うので、いろいろ試してみてください。

最後に、移行後しばらくして気がついた、忘れがちなポイントを紹介しておきます。

・静的ファイル各種
robots.txtとかGoogleやYahooのウェブマスターツールの認証用HTMLとか忘れがちなので注意。

・HTMLのコメントがそのまま表示されてしまう
mtの記事内にHTMLのコメント(こういうの→「<!–コメント–>」)を入れていたんですが、wpではそのまま表示されてしまっていました。

・更新Pingリスト
記事情報以外の設定データは忘れがちなので要注意。

FTPを使ったプラグイン自動アップグレード

2008 年 11 月 17 日 月曜日

いつものようにwpの管理画面を開いたら、プラグインのところに!(ビックリマーク)が表示されていて、何事かと思ってチェックしてみたら

新しいバージョンの Google XML Sitemaps が利用可能です。バージョン 3.1.0.1 をこちらからダウンロードするか、または自動アップグレードを実行してください。

という表示が出てました。
というわけで、指示に従ってアップグレードを進めます。

FTP接続情報を入力し、開始ボタンをクリックすると、、、

ダウンロードに失敗しました。: 一時ファイルを作成できませんでした

というメッセージが。

wp-contentのパーミッションが問題だったみたいで、707に変更したら無事アップグレードできました。

08/12/02追記:
自動アップグレードも完璧というわけでないので注意が必要なようです。
http://jp.blogherald.com/2008/03/19/wordpress-25-plugins-beware-automatic-plugin-upgrade-problems/

カテゴリの並び順を変える(コーディング編)

2008 年 11 月 12 日 水曜日

前回、プラグインでカテゴリの並び順を変える方法を調べましたが、今回はプラグインを使わず、自力でカテゴリの並び順を変える方法を模索してみました。

まずはGoogleで見つけたものから。

http://www.marushima.info/?p=54

wp_categoriesにソート用のカラムを追加してしまうというやり方。かなり強引ですが、こういうのもアリですね。
でもwp_categoriesって古いバージョンのwpのものなので、現行バージョンでは使えないです。

次はtheme内でゴリゴリコーディングするやり方。
以下は、自分で実際に試したものです。


$cat_order = array(3,2,1,5,7); //←並べたい順番でカテゴリIDを指定
foreach($cat_order as $cat_id)
{
$cat_v = get_category($cat_id,"ARRAY_A");
echo '<li><a href="/contents/category/'.$cat_v["slug"].'">'.$cat_v["name"].'</a>('.$cat_v["category_count"].')</li>';
}

$cat_orderでカテゴリの並び順を指定しています。このコードだと1階層しか対応していませんが、頑張れば2階層でもいけると思います。

また、記事数のカウントがなくてもいいなら直接HTMLを書いてしまうのも手ですね。
カテゴリが頻繁に増えたり減ったりするサイトでなければ、こういったやり方でも問題ないと思います。

技術にとらわれず、サイト運営の目的や状況に応じて臨機応変に対応していくのが賢いやり方だと思います。

カテゴリの並び順を変えるプラグイン

2008 年 11 月 11 日 火曜日

2.6.3現在、wpのデフォルト機能ではカテゴリの並び順を指定することができません。

標準のwp_list_categoriesタグはとても便利ですが、orderbyで指定できる値はこの3つのみです。

* ID – カテゴリID
* name – カテゴリ名のアルファベット順(初期値)
* count – カテゴリの投稿数

この貧弱なソートオプションでは、自分の思い通りにカテゴリを並べ替えられる人はまずいないと思います。

そこで登場するのがカテゴリ並び替えプラグイン。
Googleで検索してみたところ、この2つがよく使われているようです。

CategoryOrder(ページ下の方からDLできます)
http://www.coppit.org/code/

MyCategoryOrder
http://wordpress.org/extend/plugins/my-category-order/

いずれのプラグインも、ソート順の値はwp_optionsのテーブルに保持しているようです。

実際にプラグインを入れて使ってみました。

まずこれは標準のカテゴリの管理画面。

CategoryOrderの管理画面

MyCategoryOrderの管理画面

CategoryOrderはシンプルで分かりやすいです。
MyCategoryOrderはドラッグアンドドロップでソート順を編集できます。

なおMyCategoryOrderを使う場合、wp-include/taxonomy.php の上書きが必要になります。WordPressは頻繁にアップデートされているので、バージョンが上がったら使えなくなる、といったことが起こりそうでちょっと怖いです。

CategoryOrderのほうはファイルの上書きは必要ありません。ただ、最終更新が2007年なのであまりメンテナンスされていないようです。

どちらがいいかは好みによると思いますが、個人的にはCategoryOrderのほうがいいと思いました。

WordPress逆引きデザイン辞典

2008 年 11 月 9 日 日曜日

自分は普段あまり技術書を読まないんですが、「一冊くらいWordPressの本を読んでおくか」と思って本屋へ行き、何冊か手にとった中で一番良さそうな感じがしたので、これを買いました。で、最初から最後まで目を通してみました。

WordPressについては基本から応用まで一通り触れてあります。「常に手元に置いておいて分からないことがあったらいつでも調べられる」というのがこの本のウリですが、リファレンス系のコンテンツはだいたいウェブで探せば見つかるので今後あまりお世話になることはないかな、といった感じです。

まあ最初の一冊目としては、可もなく不可もなく、といったところでしょうか。今後も気になる本があれば当サイトにてレビューしていこうと思っていますが、まずはこの本が基準になってくると思います。

ページのmeta descriptionとmeta keywordsを自動生成してくれるプラグイン「Add-Meta-Tags」

2008 年 11 月 6 日 木曜日

http://www.g-loaded.eu/2006/01/05/add-meta-tags-wordpress-plugin/

最新バージョン(2008年11月現在)「add-meta-tags-1.6.zip」をダウンロードして解凍。「add-meta-tags.php」を「wp-contents/plugins」にアップロードし、管理画面でプラグインを有効化。

以上で導入完了です。
wp2.6.3に導入して使っていますが、特に問題はありません。

あとはページのソースを開いて確認するだけ。meta descriptionとmeta keywordが挿入されてます。

…最近ではmeta descriptionもmeta keywordもSEOにはほとんど効果がないと言われてますが、まあ邪魔になることはないでしょう。とりあえずこのまま使ってみようと思います。

WordPressを安全に運営するための10のTips

2008 年 11 月 6 日 木曜日

すぐに導入できるものがほとんどなので、さっそく実践していこうと思います。

http://coliss.com/articles/blog/wordpress/825.html

再構築はもう古い!

2008 年 11 月 5 日 水曜日

最初に結論から書くと、

MovableTypeに代表される静的パブリッシング、いわゆる再構築型のCMSは既に時代遅れになっており、これからは動的パブリッシング型のCMS、つまりWordPressの時代が来る、というかもう来ている。

と、管理人は考えています。(言い切っちゃった。。)

以下、その理由をつらつらと述べます。

再構築” …MovableTypeを使った人なら誰でも知っているコトバです。

はじめてmtを使ったときは、

ウォー、スゲーッ!!HTMLが作成されてるよ!!

と、ちょっと感動したと思います。

それがしばらく使っていくうちに、

あ、テンプレート編集したから再構築しなくちゃ
重すぎて再構築が止まっちゃった(涙目)

という問題にぶち当たります。お約束です。

この再構築という考え方、一昔前(2001年頃)は非常に魅力的でした。

その当時はDBといえばOracle、プログラム言語といえばJava(オブジェクト指向)、サーバーOSといえばSolarisという時代。自分もちょっと勉強してOracleマスターゴールドを取得したりしてました。

オープンソースDBも今ほど普及しておらず、phpも出始めでした。
動的なサイトをOracle+Java+Solarisで作ろうものなら、CPUライセンスやらプログラマの人月やら運用コストやら、莫大な費用が発生してしまう、という時代だったんです。

そうした状況だったのでCMSで静的なHTMLを出力するという考え方はとても合理的でした。

ユーザーが直接DBにアクセスすることを極力減らし、なるべく静的なHTMLファイルにアクセスさせる仕組みでコストを抑える。やれることの幅は狭まりますが、コスト減は魅力がありました。
自分もこの当時Oracleをベースに静的パブリッシングをするCMSにかかわっていたんですが、営業に行くとほとんどのお客さんは興味を示してくれました。

そして時は流れて現在。。。

昔に比べるとウェブサイト構築のコストが劇的に減りました。
いまやLAMP(Linux,Apache,MySQL,PHP)全盛期。各種のIT技術もどんどん進歩しています。

高コストだった動的サイトが、ごく当たり前な存在になったのです。

さらに言うと、今ではもう静的パブリッシングを採用する意味はほとんどなくなったと思っています。

もちろんケースバイケースだと思いますが、ほとんどの場合で静的パブリッシングは足かせにしかならないと思います。

当然mt陣営もこの問題は意識していると思います。バージョン3からmtでも動的パブリッシングがサポートされるようになりました。が、プラグインが対応していなかったりといろいろ問題があるようです。また世間的なイメージも「mt=静的パブリッシング」となってる気がします。

だいぶ長くなりましたが、こうした理由から冒頭の結論に達するというわけです。

動的サイト開発・運用コストが下がった今の時代、最初から動的なCMSとして作られたwpが、今後(日本でも)主流になっていくのではないかと考えています。というか、信じています。まあそのくらいの気持ちがないと、こんなサイト作ろうとは思わないですよね。

そんなわけで、ひたむきにWordPressを学んでいきたいと思っています。精進あるのみ!

xreaでWordPressを使う際の注意

2008 年 11 月 5 日 水曜日

このサイトはxreaというレンタルサーバに置いてあります。
(※正確にはxreaの上位サービスcoreserverですが、便宜上xreaと呼びます)

xreaはバリュードメインという会社が運営しているレンタルサーバーです。
安くて高機能ですが、サポートはあまり当てにできないので、壁にぶち当たったときに自分で調べて解決できる力のある方にはおすすめです。またドメイン取得も日本国内では最安クラスです。
自分はレンタルサーバは2アカウント、ドメインは20個近く登録しているかなりのヘビーユーザーです(^^;

バリュードメイン

前置きが長くなりました。

xreaはphpもmysqlも使えるのでWordPressは普通にインストールできますが、phpがセーフモードになっているのでファイルのアップロード機能など、一部の機能が使えません。

この問題を回避するために、一部のphpをcgiモードで動作させます。

やり方はこちらを参照。
http://wp.graphact.com/2006/08/16/56

.htaccessを置くだけなので、バージョンアップなどでファイルを更新しても大丈夫です。

ユーザーが多いので、こうした事例も探せばすぐ見つかるのがxreaの強みですね。

2008/12/16追記:
media-upload.phpも加えておいたほうが良いようです。そんなわけで.htaccessはこんな感じにしてます。
<Files "media-upload.php">
AddHandler application/x-httpd-phpcgi .php
</Files>

カスタムURL使用時にはデフォルトURLはリダイレクトされる

2008 年 11 月 4 日 火曜日

wpのデフォルトのパーマリンク形式は http://example.com/?p=123 ですが、PATH_INFOを使ったURLにカスタマイズすることができます。(たとえば http://example.com/archives/123 )

このカスタムURLを使っている状態でデフォルトのURLにアクセスすると、自動的にカスタムURLへリダイレクトしてくれるんです。

しかもご丁寧に、ヘッダには「HTTP/1.x 301 Moved Permanently」を入れてくれます。

サイト運用中にデフォルトURLからカスタムURLに変更しても、すべてのページがリダイレクトされるのでスムーズに移行できるというわけです。

地味なテクニックですが、知っておくといつか役に立ちそうですね。