WordPressで保存された履歴を削除し、さらに履歴を保存する数を制限もしくは無効にする方法

WordPressから記事をExportして、さらにImportすることがあります。WordPressでは、Exportすると
xmlのファイルになるのですが、これがサイズが大きいことがあります。中を見てみると、過去の版(履歴)も含まれています。
これは、exportしてimportしたときに、前のサイトでの編集の履歴までインポートできるので、便利な機能ではあるのですが、
記事を書いている最中にマメに「保存」「保存」とするとどんどん版がふえて、エクスポートファイルのサイズも
どんどん大きくなってしまいます。そこで、サイズの削減のために過去の履歴を削除することを考えてみます。

削除は簡単で、mySQLのサーヴァーに接続して下のコマンドを実行します。

DELETE FROM wp_posts WHERE post_type="revision";

テーブル名「wp_posts」は該当するものにかえてください。「接頭辞_posts」の形式です。重要なデータの場合は、念のため
実行する前にテーブルをバックアップしたほうがいいでしょうね。

ちなみに、あるサイトでこれを実行したところ、18MBあったエクスポートファイルが3.4MBになりました。1/6!

そもそも、なんでこんなにたくさんリビジョンを保存するのであろうか。必要あるのかしら? と思われた向きには、
保存する履歴の数を指定する機能があります。ただしWordpress 2.6以降のみ? 調査はしていません。

その方法は wp-config.phpに次のような行を追加するだけ。

define('WP_POST_REVISIONS', 数);

「数」に数字をいれると、その数だけにリビジョンが制限されます。0やfalseにするとリビジョンを保存する機能が
無効になるようです。

いやー、こんな定数があるなんて知らなかった…WordPressにはまだまだおもしろい機能がたくさんありそうです。

参考文献

  1. How to delete existing WordPress post revisions stored/saved, My Digital Life, 2008
  2. Disable and turn off post revisions tracking in wordpress 2.6 or above, My Digital Life, 2008
  3. How to store every post revisions on each auto save in wordpress with limit on versions count, My Digital Life, 2008

Blogger(blogspot.com)をよそへリダイレクトする方法

ウェブのURLを変更する場合、301リダイレクトをすると検索エンジンが「URLが変更になったんだな」と認識してくれることになっていますが、Bloggerからよそへひっこす場合、定番の.htaccessを使った方法やPHPのスクリプトを使う方法がつかえません。かわりの方法を試してみたのでメモしておきます。

手順は以下のとおり。

  1. 移転元のBloggerから、移転先のWordpressへ記事をインポートしておく。パーマリンクも同じにしておく。
  2. Bloggerの「レイアウト」「HTMLの編集」で、<header>と</header>の間に下記の2行をいれる。
    <meta content='0;url=http://your.new.blog.domain.com/newdir/' http-equiv='refresh'/>
    <meta name="ROBOTS" content="NOINDEX, NOFOLLOW"/>
    
  3. 同じくBloggerの「レイアウト」「HTMLの編集」で、「<b:section class=’main’ id=’main’ showaddelement=…」のすぐあとに以下のコードをいれる。
    <b:widget id='Redirector' locked='true' title='Blog Posts' type='Blog'>
    <b:includable id='main'>
    <b:if cond='data:blog.pageType == "item"'>
    <b:loop values='data:posts' var='post'>
    <script type='text/javascript'>
    var new_page=&#39;your.new.blog.domain.com/newdir/&#39;;
    var permalink = &#39;<data:post.url/>&#39;;
    var timestamp = &#39;<data:post.timestampISO8601/>&#39;;
    timestamp = timestamp.split(&#39;-&#39;);
    timestamp = timestamp[0]+&#39;/&#39;+timestamp[1];
    new_page = permalink.replace(/youroldblog.blogspot.com/20[0-9]{2}/[0-9]{2}/,new_page+timestamp);
    document.location.href = new_page;
    </script>
    </b:loop>
    </b:if>
    </b:includable>
    </b:widget>
    

このコードでは移転元と移転先のパーマリンクがwordpressでいうところの「/%year%/%monthnum%/%postname%.html」であるということを前提としています。ちがう場合は、timestampあたりを適当に修正してください。このコードは参考文献[1]をベースに、おかしいところを多少変更しました。

「1.」が案外むづかしい。ふつうにインポートすると、パーマリンクが保存されません。記事の数が多い場合は困るね。要検討です。

「2.」の meta http-equiv=’refresh’は正確には301リダイレクトにはなりませんが、Yahoo!やGoogleは転送前の時間が0または1の場合は301として、それより大きい場合は302として扱うそうです(参考文献[2])。なので、これでよしとしよう。

というわけで、ためしにやってみました。http://unixjp.blogspot.com/2006/05/blog-post.htmlにアクセスすると、http://narak.jp/wptest/2006/05/blog-post.htmlへリダイレクトされるようにしました。Google/Yahoo!が301扱いを
してくれているかどうかはわかりませんが….

参考文献

  1. How To Redirect Blogger Beta To WordPress.Com, laffers.net, 2007
  2. 301 Moved Permanentlyでウェブサイトを転送する方法, たんきゅうラボ, 2006

画像をカッコよく一覧表示してくれるプラグイン PicLens

Firefoxで勝手にページをめくってくれるプラグインAutoPagerizeも大変便利ですが、見るのが画像だけの場合はこっちの方がいいかも! その名もPicLensです。対応ブラウザはFirerfox, IE, Safariとなっていますが、Safariは肝心の「3D Wall」という機能が対応していないので、せっかくですから最近でたばっかりのFirefox 3をお薦めします。

Firefox 3をインストールしたら起動して、PicLensをインストールします。PicLensのインストールは簡単。Firefox Addonのページにいって、「インストール」ボタンを押すだけ。

PicLens installation

図1. インストールボタン

本当にインストールしていいかどうか聞かれるので、続行します。インストールできたらFirefoxをリスタートするとPicLensが有効になります。

ではさっそく使ってみましょう。flickrのフォトストリームが表示されているところで、右上の「PicLens」のアイコンを押します。

PicLens Firefox

図2. PicLensのアイコン

これね。これをポチッとな。すると!

PicLens Firefox

図3. 3D Wall

おー、すごい! フォトストリームだけじゃなくて、Flickrのsetのなかでもポチッとすると、

PicLens!

図4. 3D Wall!

おおおお、すごい!

このように対応しているページ(参考文献[1]を参照)なら、Autopagerizeのように自動でページをめくってくれます。対応していないページだと、ページないにある画像だけ表示してくれます。

というわけで、YouTubeもPicLens!

PicLens PicLens!

図5. YouTubeもPicLens

Google ImageもPicLens!

PicLens of Nina Moric on Google Image

図6. Google ImageもPicLens

この「3D Wall」モードの他にも、写真をダブルクリックするとひとつの写真が大きく表示されてスライドショーできるモードにもなります。このPicLens、とっても便利なので、みなさんも使ってみてくださいねー。

参考文献

  1. PicLens
  2. Firefox
  3. PicLens 1.7.0.3459, Firefox Addons, 2008

WordPressのサブページの一覧を自動的に表示する方法

WordPressにはふつうのブログの記事「Post」と、それ以外に「Page」という記事の投稿方法があります。ポストは通常の
ブログの記事のように時系列にそって書き足していくようなものに向いているのに対し、ページは比較的静的な内容のものを書くのに
向いていると言われています(参考文献[1])。
サイトの内容をすべて「ポスト」で書いて、カテゴリーやタグを利用して分類する手もありますが、
今回のテストサイトでは、ニュース記事を「ポスト」で、通常のコンテンツを「ページ」で構築してみました。

ぺージには階層構造を持たせることができ、ページの下にサブページを作成することができます。そして、「ページ」はテンプレートタグ(参考文献[2])を使っていろいろな方法で表示できますが、サブページの取り扱いが十分とはいえないので、多少工夫する必要があります。

まず、親ページの一覧の取り方ですが、参考文献[4]にあるように

<?php wp_list_pages('title_li=&depth=1'); ?>

とすれば<li>で囲まれたアイテムとしてページの一覧がリンクつきで出力されます。問題はサブページです。ページが2階層のとき、現在表示しているページが親ならば自分の子供たちを、現在表示しているページが子供ならば兄弟たちを表示したいのですが、そのようなタグがないので、以下のようにします。

<?php 
if (is_page() && $post->post_parent ) { //サブページのとき
   $parent=$post->post_parent;
} else { //トップページのとき
   $parent=$post->ID;
}
$ul_top_title = get_the_title($parent);
$ul_top_url = get_permalink($parent);
if(wp_list_pages("title_li=&child_of=$parent&echo=0" )):
?>
<div id="sidebar">
<ul>
<li id="sidebartop"><a href="<?php echo $ul_top_url; ?>"> <?php echo $ul_top_title; ?> </a> </li>
<?php 
$children = wp_list_pages('title_li=&sort_column=menu_order&child_of='.$parent.'&echo=0');
echo $children;
?>
</ul>
</div>
<?php endif; ?>

深入りして解説はしませんが、ざっと言うとまずいま表示しているのが親ページか子ページかを判別し、
親ページなら自分自身、子ページなら親のページIDを$parentにセットします。次に、$parentに子ページがあれば
サイドバークラスのdiv要素を挿入して、$parentの子供の一覧を挿入する。子ページがなければ何もいれない。
という感じになっています。詳しくは参考文献[3][4][5][6]あたりを御覧になるといいかも。

これでサンプルサイトで言うと、このような表示が実現できています。

Pages and Sub Pages

図1. サンプルサイトでの表示

WordPressのいいところはのひとつは、テンプレートにすきなようにPHPのコードをかけるところですね。ってあたりまえ?

参考文献

  1. Pages, WordPress Codex
  2. テンプレートタグ, WordPress Codex 日本語版
  3. Conditional Tags, WordPress Codex
  4. WordPressのサブページナビゲーションを動的にする方法, ブログヘラルド, 2007
  5. WordPressテーマ(テンプレート)カスタマイズのまとめ(日本語訳), 2008

WordPressでRSSにページの更新も含めるプラグイン「Feed Control」

WordPressには「ページ」というふつうのブログのポストとは違う記事をかく方法があって、使い方によっては大変便利なのですが、
これがデフォルトではRSSに含まれません。「ページ」だけ、あるいは「ページ」と「ポスト」の両方をつかってサイトを作る場合、
これではこまってしまいますね。そんなときはfeed controlというプラグインをつかうといいですね。

使い方は簡単。

  1. feedcontrol_v1-0.zipをダウンロードする。
  2. zipファイルの中身を、インストールするWordPressのディレクトリのwp-content/plugins/以下に展開する。
  3. WordPressの管理画面の「プラグイン」でfeed controlを「有効」にする。
  4. 「設定」の「feed control」でfeed controlの設定をする。特に変更しなくてOK。
Feed Control

図1. 管理→Feed Control

すると…

Feed

図2. 「ページ」も含まれたRSS Feed

みごとに「ページ」もRSSに含まれています! って、 この画面では「ポスト」なのか「ページ」なのか、みただけではわかりませんが…ここにみえてるのはぜんぶ「ページ」ですね。

これは大変便利なのでみなさんもお使いになってみてくださいねー!

参考文献

  1. Feed Control, slipstream, 2006
  2. ページのRSS配信を可能にするプラグイン Feed Control, WordPress Go Go, 2007
  3. 早山高校(サンプルサイト)のフィード

WordPressでブログではないふつうのサイトを構築する

わけあって、WordPressをつかってふつうの(ブログでない)サイトを作ってみようとおもい、試しに作ってみました。

sample site

図1. サンプルサイト

名前とかはもちろん適当です。1人で2日間ぐらいでできちゃったんですが、「WordPressサイト構築スタイルブック」のサンプルを参考にさせていただいたのでそのはやさでできました。参考ていうか、そのまま? ^^; この本は非常に面白いので、お勧めします。わたしも買いました。

図2. WordPressサイト構築スタイルブック

もちろんまるごとおなじではなくて、「ページ」を使ってサイトを構築してるんだけども、サブページの一覧をだすようにしたり、
デフォルトではRSSにはポストだけしか含まないのを「ページ」を含むようにしたり、いろいろ変更してあります。おかげで、
WordPressのバックエンドやテンプレートタグの概要がつかめました。そのへんのTipsも稿を改めて書いておきますね。

参考文献

  1. WordPressサイト構築スタイルブック」のサンプル
  2. 国立谷山早山高等学校サイト(サンプル)
  3. WordPress.org

Googleのひとが発表した論文の一覧

Googleのひとが発表した論文の一覧が「Papers Written by Googlers」こちらから見られます(参考文献[1])。発表年でならべかえることも可能です。2007年には181本出ていますね。なかなかすごい。まあ、Ph.D.ばかり採用しているそうですから、論文が書けて当然という気もするね。

カテゴリ別でみると、やっぱりDistributed Systems and Parallel Computingが面白そうですね。「Failure Trends in a Large Disk Drive Population」とかね。「Simple Efficient Load-Balancing Algorithms for Peer-to-Peer Systems」とか。しばらく楽しめそう。

でもあれだな、ざっとみると、査読つきのいわゆる論文誌は少なくて、国際学会と、あとはIEEE MICROとかComputerとかそういう雑誌が多い感じだね。大学とちがって、査読つきの論文の本数で評価されないからかな。参考文献[2]によると、「Googleで論文を書くのはどのくらいむづかしいの? とよくきかれるのだが、それはむづかしいという俗説を振り払っておきたい。出版物を出すのは簡単だし、オープンソースにコードをおくのも簡単だし、ひととしゃべるのも簡単だ」だそうです。企業秘密で発言を規制したりしませんよ、オープンですよー、といいたいんですね。なるほどね。ふつうの企業だとけっこううるさいからね。

しかしあれだね、ほかの企業もこうやって全社の出版物をまとめると「営利追求だけではなくて、人類の進歩に貢献していますよー」とアピールできて、いいですね!

参考文献

  1. Papers Written by Googlers, Google
  2. Can You Publish at Google?, Rich Gossweiler, Official Google Research Blog, 2008

さくらのレンタルサーバーにRuby on Rails 2.0.2をインストールする方法

数日前、読者のかたからメールをいただきました。「rubygemsが1.1.1になっており、記事通りにしてもインストールできない」とのことでした。前の記事さくらのレンタルサーバーにRuby on Railsをインストールする方法を書いてから、9箇月たちまして、Ruby on Railsもrubygemsも新しいバージョンがでています。前の記事を書いたときと状況がかわっているので、今のバージョンでのインストールの方法を新たにまとめてみました。

インストールするのは次のものです。

  • rubygems 1.1.1
  • Ruby on Rails 2.0.2

例によって、rubyは標準のものを使用します。最新版は1.8.7が現在preview2 ですが、標準でインストールされているのは1.8.5です。確認しておきます。

% ruby --version
ruby 1.8.5 (2006-08-25) [i386-freebsd6]

railsをいれるまえに、rubygemsをイントールします。2008年5月時点での最新版は1.1.1です。バグも修正されたようで、以前よりインストールが簡単になっています。ふつうに$HOME以下にインストールすればOK。$HOME/src以下にrubygemsのソースコードをもってきます。$HOME/srcがなかったらこの機会に作ってしまおう。

% mkdir $HOME/src
% cd $HOME/src
% ftp http://rubyforge.org/frs/download.php/35283/rubygems-1.1.1.tgz
Requesting http://rubyforge.org/frs/download.php/35283/rubygems-1.1.1.tgz
Redirected to http://rubyforge.rubyuser.de/rubygems/rubygems-1.1.1.tgz
Requesting http://rubyforge.rubyuser.de/rubygems/rubygems-1.1.1.tgz
100% |*************************************|   413 KB   85.21 KB/s    00:00 ETA
423308 bytes retrieved in 00:04 (85.21 KB/s)

tar+gzipを展開して、その中に移動し、早速インストール。標準だと/usr/local/以下にインストールされるようですが、さくらのレンタルサーバーではもちろんそんなところにインストールできないので、$HOME以下にインストールするよう、オプションをつけます。

% tar zxf rubygems-1.1.1.tgz
% cd rubygems-1.1.1
% ruby setup.rb --prefix=$HOME
mkdir -p /home/narak/lib
mkdir -p /home/narak/bin
install -c -m 0644 rubygems.rb /home/narak/lib/rubygems.rb
...
RubyGems installed the following executables:
 /home/narak/bin/gem18

If `gem` was installed by a previous RubyGems installation, you may need
to remove it by hand.

gem18という名前で$HOME/binの下にインストールできたようなので、確認します。その前に$HOME/binがコマンドサーチパスに入っていないひとは、入れておきます。railsは$HOME/lib/ruby/gem/binにはいるので、そっちもついでに追加。$HOME/.cshrcに次のように書いておきます。

set path = (/sbin /bin /usr/sbin /usr/bin ...(中略)... $HOME/bin $HOME/lib/ruby/gem/bin)

ついでに$HOME/.cshrc中で環境変数RUBYLIBとGEM_HOMEも指定しておきます。rubygems.rbがインストールされる場所が変わったので、RUBYLIBもちょっとかわっています。

setenv RUBYLIB $HOME/lib
setenv GEM_HOME $HOME/lib/ruby/gem

できたらsourceして、インストール直後はコマンドサーチパス内にあってもみつからないので、rehashしてからバージョンの確認。

% source $HOME/.cshrc
% rehash
% gem18 --version
1.1.1

できました。つづいてrailsのインストール。 railsは$HOME/lib/ruby/gem/binの下にインストールされます。コマンドドサーチパスにはすでにはいってますね? railsのインストールは簡単。

% gem18 install rails --include-dependencies

できたらrehashしてバージョンの確認。

% rehash
% rails --version
Rails 2.0.2

できた! だいぶ簡単になりましたねー。

参考文献

  1. rubygems
  2. Ruby on Rails
  3. オブジェクト指向スクリプト言語 Ruby
  4. さくらのレンタルサーバにRuby on Railsをインストールする方法, がんちゃんのブログ, 2007

WordPressにGoogle Analyticsのトラッキングコードを追加する方法

全然更新してないけど、実験用のWordPressのサイトにGoogle Analyticsのコードを追加してみました。画像はflickrにおいたものを使ってるんだけど、flickrのstatみるとそこそこアクセスがあるようなので。

ふつうに(?)ga.jsっていうトラッキングコードを埋め込んでもいいんだけど、せっかくなのでPluginを使ってみることにしました。今回つかってみたのはUltimate Google Analyticsというプラグインです。ではさっそくインストールの方法。

  1. まず、Google Analyticsのアカウントをとります。
  2. Ultimate Google AnalyticsのZIPファイルをダウンロードします。2008年4月現在の最新版は1.6.0です。ダウンロードはUltimate GAのダウンロードの章からどうぞ。
  3. ZIPファイルを展開するとでてくるphpファイルを、WordPressがインストールされているディレクトリの下にある
    wp-content/plugins ディレクトリの下にコピーします。
  4. WordPressの管理画面 (通常 http://あなたのblog.com/wp-admin です)に行き、「Plugins」タブでUltimate Google Analyticsを「Activate(有効に)」します。
  5. Ultimate Google Analyticsが有効になっていると「Options」タブの下に「Ultimate GA」というタブができるので、ここで設定をします。とりあえず「Account ID」だけ設定すればよいでしょう。Account IDはGoogle AnalyticsのアカウントのIDです。UA-999999-9というようなフォーマットをしています。UA-999999の部分がアカウントのIDで、最後の一桁がWebサイトごとにつけられた番号だと思われます。

なお、すでにGoogle Analyticsに登録してあるwebサイトのAccount IDの確認の方法がわかりにくくなっています。Analyticsにログインして、「Analytics 設定」→ webサイトのリストの右側にある「編集」→ 上部に出てくる「(ステータスを確認) 」でそのWebサイトのトラッキングコードが表示されます。そのなかにUA-999999-9というフォーマットのIDがあるはずですので、それをつかってください。

google analytics

図1. Google AnalyticsのAccount ID

これだけでとりあえず完了です。あとはGoogle Analyticsがレポートをアップデートするのをまつだけです。Google Analyticsのアップデートは、今のところ24時間ぐらいかかっているようです。

参考文献

Flickrの便利サイトBig Huge Labs

前回のFlickrコメントに参照元で参照もとになっていてみつけたのがこのサイト。BigHugeLabs。なんかFlickrをあそびたおすサイトらしい。こんなのあるんだなあ、しらなかった。

Flickrバッジをつくったり、写真でジグソーパズルをつくったりいろいろできるようですが、そのなかで今回紹介したいのがFlickr DNAというやつ。あるひとのFlickrでやってることが一覧できちゃうものです。

たとえばわたしのはこれ。Flickr Profile: kenic。上から順番にみてみましょう。

まずは、写真のアップロード数。

graph.jpg

写真1. 過去30日分のアップロード数

そうおおくないねー。その次にあるのが最近アップロードした写真の一覧。

public-photos.jpg

写真2. 最近の写真

ここまではいいんです。次は、「interestingness」順に並べた写真の一覧。

interesting-photos.jpg

写真3. 「おもしろい」写真の一覧

Flickrは参照数や、つけられたタグの数やコメントの数で「interestingness」というのを写真ごとに計算してくれているのです。なんか、ハラの写真がはいってるー ^^;; はずいわ。そしてつぎ、favoriteに入れた写真の一覧。

favorites.jpg

写真4. 「favorites」一覧

Flickrはすきな写真を「おきにいり」にすることができて、あとからみることができるんですね。しかし、これもはずかしい ^^;; ふだんはどうせ見る人なんかいないだろうと思って、気軽に追加しているんですが、これだと丸見え! ほとんど美人の写真ばかり….すけべなのがばれる! ^^;

ほかにもタグクラウドやコンタクトの一覧などを見ることができます。けっこう便利そうだね! つかわせてもらいまーす。

参考文献

  1. Big Huge labs