レンタルサーバで自前で運用していた WordPress から WordPress.com にデータを移した。これでどれだけ放っておいても安心だ!

先月さくらインターネットから CORESERVER.JP に移転した際、WordPress の記事の ID がずれてしまったようなので、元通りに修正しました。結果的に、各記事の URL がこの一ヶ月の間は変わってしまっていたので、各種ブックマークから飛んできた方が別の記事にたどり着いていたはずで、大変申し訳ないことをしてしまいました。そもそも記事のURLに管理上のIDを含めてしまったのが間違いのもとなのです。。

今回は WordPress のインポート機能は使わずに、MySQL から直接エクスポートしておいたデータを、phpMyAdmin 経由で直接書き戻しました。

広告

WordPress 2.3.1

2007/11/27

気が向いたので、このブログのWordPressを最新バージョンである 2.3.1 に上げてみました。

WordPressは2.3からタグ付け機能をサポートしているので、これまで必要だったタグ関連のプラグインは不要になっています。有名どころのタグ付けプラグインからのインポート機能も提供されているので、簡単に移行できました。

今さらの感はありますが、話題の[はてなスター](http://s.hatena.ne.jp/)設置しました。WordPress への設置にあたって少々調整した部分もありますので、一応エントリ。

まず、一般的に、はてなスターを設置するには、ブログが出力する HTML の`head`要素内に以下のような JavaScript を含めます。

すると、リンクを含む`h3`要素を、記事のパーマリンクとタイトルだと検出して自動的にはてなスター機能を付与します。`h3`要素以外をタイトルとしたい場合には以下のような記述を加えます。

Hatena.Star.headerTagAndClassName = [‘h2′,’entry-title’];

これで、リンクを含む、クラス名が`entry-title`の`h2`要素がタイトルとして検出されます。

ここで、このブログに設置するにあたって調整した部分を紹介します。

#### 1. WordPress のテーマファイルを編集せずに設置したい
`head` 要素に JavaScript を含めるには、WordPress のテーマファイルのヘッダ部分に直接 JavaScript の記述を追加してしまうのが手っ取り早いのですが、僕は結構頻繁にテーマファイルを変更するので、できればテーマファイルを編集したくありません。

テーマによらずヘッダを出力するには、そんなプラグインを作ってしまえばよいということで、プラグイン化しました。テーマファイルいじればいいじゃん、と思いもしますが、まあこれも勉強ということで。使いたい人は[こちら](/works/wp-simple-hatenastar)からどうぞ。

追記:さっき気付いたのですが、普通にヘッダを出力すると、WordPress のプレビュー機能が動かなくなってしまいました。おそらく、未公開の記事に対してはてなスターの処理が走ると、どこかで処理が停止してしまうのではないかと。対策として、プレビュー画面の場合( `is_preview()` が `true` の場合)はヘッダを出力しないようにしました。

### 2. 記事のタイトルの抽出方法を変更したい
上述したように、リンクを含む`h3`要素が記事タイトルとして検出されますが、このブログでは記事のタイトルは`h2`要素に含まれる上、パーマリンク先の記事単独ページではタイトルがリンクになっていません。対策としては、

1. ブログのテーマファイルを変更してタイトルをリンクにする
1. はてなスターの記事検出メソッドを上書きする

の二つが考えられます。ここは「自分のブログを変更してたまるか」という意地で、二つ目の対策を取ります。

記事検出メソッドは の `Hatena.Star.EntryLoader.loadEntries` なので、オリジナルを参考にして、以下のような記述をヘッダに含めました。

[source:js]
Hatena.Star.EntryLoader.headerTagAndClassName = [‘h2′,’entry-title’];
Hatena.Star.EntryLoader.loadEntries = function() {
var entries = [];
var c = Hatena.Star.EntryLoader;
var headers = c.getHeaders();
for (var i = 0; i < headers.length; i++) {
var header = headers[i];
var a = header.getElementsByTagName(‘a’)[0];
if (!a) var uri = document.location.href;
else var uri = a.href;
var title = ”;
var cns = header.childNodes;
title = c.scrapeTitle(header);
var cc = c.createCommentContainer();
header.appendChild(cc);
var sc = c.createStarContainer();
header.appendChild(sc);
entries.push({
uri: uri,
title: title,
star_container: sc,
comment_container: cc
});
}
return entries;
}
[/source]

オリジナルから変更したのは以下の二点です。

1. `Hatena.Star.EntryLoader.headerTagAndClassName = [‘h2′,’entry-title’];`を追加し、`entry-title`クラスの`h2`要素をタイトルとして検出するように指定しました。

2. for ループ中で`if (!a) var uri = document.location.href;`とし、`h2.entry-title` 要素の中にリンクが含まれていない場合、ドキュメントの URL をパーマリンクとするようにしました。

これでテーマファイルを変更することなく、記事検出できるようになりました。でもこれ、テーマを変更すると書き直しだな。。。

以上で見事設置できましたが、結構手間がかかりました。

### 参考にさせていただいた情報
[nice_link]
[はてなスター日記 – はてなスターをブログに設置するには](http://d.hatena.ne.jp/hatenastar/20070707)
[massat.jp – WordPressに「はてなスター」を設置してみた](http://massat.jp/2007/07/12/243)
[Fenrir’s BLog – はてなスターのカスタマイズ設置](http://fenrir.naruoka.org/archives/000578.html)
[/nice_link]

会社でも WordPress を使った社内ブログを管理しているのですが、「記事からリンクが張れないんだけど」という意見を貰いました。聞いてみると、`` タグで `http://~` などではなく、独自プロトコルの URL にリンクを張りたいんだけど、記事を入力して保存したら URL が消えてしまうとのこと。

調べてみたところ、’/wp-include/kses.php’ の中で、記事を保存する際に、妙なプロトコルへのリンクの場合は URL を消しちゃうというフィルタが設定されていました。利用可能な URL スキーム(プロトコル)は kses.php の中にハードコーディングされていたので、そのときには kses.php にスキームを追加して対処しました。変更点は こんな感じです。

ここで終わらせてもよかったのですが、解決策が汚くて好みじゃないのと、勉強のために、[URL スキームを管理するプラグイン](/works/wp-urlschemes)を作ってみました。動きとしては、管理画面からスキームを登録しておき、kses.php が設定するフィルタを無効にして独自のフィルタを設定しています。

管理画面とデータベースにタッチしたので、そのあたりの動きが何となくわかった気がします。日本語の情報が少なかったので、今度ざっくりまとめてみようと思います。

というわけで、需要があるかどうかは不明ですが、とりあえず作ったので配布してみました。ちなみに社内ブログでリンクしたかったプロトコルは[この Firefox プラグイン](http://firefox.geckodev.org/index.php?Custom%20Buttons) のためらしいです。

先日、社内の勉強会で JavaScript と Ajax をとりあげました。僕は勉強会用のプレゼンテーションスライドを HTML + JavaScript で自作してみたのですが、後で調べると、W3C 謹製の [HTML Slidy](http://www.w3.org/Talks/Tools/#slidy) や [S5](http://meyerweb.com/eric/tools/s5/) といった、XHTML + CSS + JavaScript でスライドを作れるものがあることを知りました。

そこで、HTML Slidy 形式のスライドを作成するウェブアプリケーションを作ってみようと、Ruby on Rails で作り始めたのですが、よく考えると CMS としては WordPress があるんだから、ブログの記事からスライドを出力すればいいじゃん、と思い直して、WordPress プラグインとして仕立て、[WP-Slidy](/works/wp-slidy/) と名付けてみました。

サンプルは[wps]こんな感じ[/wps]です


#WP-Slidy
##2007 hara

#WP-Slidy とは
* WordPress プラグイン
* WordPress の記事からスライドを作成
* スライドは W3C の HTML Slidy 形式

#ねらい

* ブログの記事でプレゼンする
* むしろプレゼン内容を記事にする
* プラグインの勉強

#でも初めてのプラグインなので

* 作り方がよくわかっていない
* バグがあるかもしれない
* そもそも、HTMLファイルを手で書いた方が早いかもしれぬ

#改善点

* URL をリライトして /slide とかでアクセスしたい
* もっと記法を簡単にしたい
* その他色々

技術系の記事を書いていると、コマンドラインプログラムのロングオプションや何かで連続したハイフンを使いますが、WordPressに連続したハイフンを入力すると、なぜかひとつのハイフンに置換されてしまいます。

仕方ないので、数値文字参照で入力しました。ハイフンは「-」で入力できるので、「--」と入力すれば「--」と表示されます。

最近、会社の部署内ブログのシステムを刷新したのですが、そこで得た知見をまとめてみます。

十数人の部署で、それぞれが個別にWordPressをインストールしてブログをたてていたのを、ひとつのシステムに統合しました。目的は

  • ユーザ・ブログの統合管理
  • ブログをまたいだカテゴリ検索・全文検索
  • コメント状況の把握

などです。これらの目的を満たす他のブログソフトウェアもあったのですが、メンバーがWordPressに慣れてしまっていたため、WordPress MUを採用しました。

続きを読む »

NiceWeb2CSS

2007/06/2

タグで囲った部分に綺麗な CSS を適用してくれるプラグインを入れてみました。

目立たせたい部分を決められたタグで囲うだけです。例えば以下のようになります。

[nice_link]配布元はこちら[/nice_link]

Google Analytics

2007/05/11

このブログは Google Analytics を利用してアクセスログを集計していましたが、ここしばらくログを収集できていませんでした。最近 Google Analytics のインタフェースが改善されたことですし、このブログでの Google Analytics の利用方法をメモしておきます。

Google Analytics を利用するには、まず Google Analytics にユーザ登録し、アクセスログを収集するサイトの URL を登録します。すると、以下のようなアクセスログ収集用の JavaScript が生成されるので、その JavaScript を自分のサイトに含めるだけです。

[nice_code]<script src=”http://www.google-analytics.com/urchin.js&#8221; type=”text/javascript”>
</script>
<script type=”text/javascript”>
_uacct = “XXXXXXXXXX”;
urchinTracker();
</script>
[/nice_code]

XXXXXXXXXX の部分にはサイトごとに異なるコードが入ります。

このブログは WordPress で作られていますので、上の JavaScript を出力するには、WordPress のテーマファイルに上のコードを追加する必要がありますが、そうするとテーマ変更のたびに JavaScript を追加する必要があり面倒です。そこで、専用のプラグインを利用することにしました。

WordPress 用の Google Analytics はいくつかありますが、このブログではシンプルな Tam-google-analytics を使わせていただいています。高機能なプラグインの中には、Google Analytics のグラフなどを WordPress の管理画面から閲覧することができるようなものもありますが、ここでは単にログを収集するだけのプラグインを選びました。

Tam-google-analytics をインストールすると、WordPress の管理画面に Google Analytics の JavaScript を入力する設定画面が追加されます。ここに JavaScript を設定すると、ブログのフッタ部分に JavaScript が出力されるようになります。Tam-google-analytics は設定したコードを単にフッタ部に出力するだけなので、Google Analytics のコードに限らず、常にフッタに出力したいものを設定しておくことも可能でしょう。また、管理画面にログイン中のユーザがブログにアクセスした場合にはコードが出力されないため、管理者のアクセスが Google Analytics で集計されることがなく、便利です。

ところで、今回このブログでログを集計できていなかったのは以下のような理由からです。Tam-google-analytics は、WordPress の wp_footer() 関数を呼び出した場所に、設定したコードを出力します。ところが、現在このブログで利用しているテーマが wp_footer() 関数を呼び出していなかったため、テーマを変更した以後、ログを収集できていませんでした。

WordPress では、プラグインが独自のデータを出力することができるように、さまざまなフック関数が定義されており、wp_footer もその一つです。したがって、全てのテーマはこれらのフック関数を含んでいるべきなのですが、今回たまたまフック関数が含まれていないテーマを利用していたため、Google Analytics 用の JavaScript が出力されませんでした。

このように、フック関数の不備によりプラグインが機能しないことがありますので、注意が必要です。