WEB/システム/IT技術ブログ

このブログでは月別アーカイブを用意し、サイドメニューにリンクを設置してしました。
書き続けること3年、つまり12ヶ月の3倍で36つのリンクがずらっとリスト化されていたわけです。今後の運用も考えると、確実に増えていくリンクは見栄えやユーザビリティ的に良くないと思ったので、どうにか整理したいと調べていました。

すると、簡単に見つかりました。公式ドキュメントのほうで、アーカイブリンクをドロップダウンボックスで構築するといった方法です。
テンプレートタグ/wp get archives – WordPress Codex 日本語版

WindowsにMovableTypeをインストールするにあたって、Perlが動作する環境が必要になります。そこで、今回はActivePerlをインストールします。なお、WindowsにApacheやMySQLなどはインストール済みの状態から作業を始めます。

各種環境は以下の通りです。

OS Windows 7 Professional
Apache 2.2.12
MySQL 5.1.37
PHP 5.3.0
ActivePerl 5.12.2

通常、WindowsにはPerlが動作する環境が整っていません。
例えばMTのインストールマニュアルに従い、Xamppが入っている状態のサーバで、「http://xxx.xxx.xxx/mt/mt-check.cgi」にアクセスしMovableTypeのインストール環境を確認しようとすると以下のようなエラーが表示されます。

Error message:
couldn't create child process: 720002: mt-check.cgi 

WindowsでPerlを有効にする方法にはいくつかあるようですが、今回は最もシンプルな方法で実現してみます。

このサイトをWordPressで構築してあるのですが、気が付けば、ページング処理が入っていませんでした。
その辺いいかげんなので。。。

ページング処理とは、「前の記事」や「次の記事」、または「1 2 3」といったリンクのことですね。WordPressでは、記事リストやアーカイブリストで表示する記事の件数は限られているので、記事が多い場合、ページングがなければトップページから古いページへ辿れないという問題が発生してしまうんです。
記事の件数は限られていると言いましたが、設定は可能です。1ページあたり100件とかにすれば、リンクで辿れるかもしれませんが、ユーザビリティに欠けますね。
このブログも記事数が増え、古いページへの遷移が途切れていました。やっぱりページングは必要です。

WordPress移行手順のメモです。前提条件としては

  • WordPressのバージョンは3.0.0
  • 別サーバで別ドメイン、例えば「http://xxx.jp/」から「http://yyy.jp/」へ移行することを想定
  • DB環境の変更に伴いテーブルプレフィックス「wp_」を「wp2_」に変更(例えば移行先に既に別のWordPressがインストールされているなどの場合)

です。

旧サーバのバックアップ

旧サーバよりFTPなどでWordPress関連のソースを全てダウンロードします。また、旧サーバDBよりWordPress関連のテーブルを全てエクスポートします。デフォルトでテーブルのプレフィックスは「wp_」となっています。エクスポートにはphpMyAdminなどを利用して、テキスト形式でSQLを取得します。

WordPress 3.1から投稿フォーマットという機能が追加されているのですが、これまで活用できていなかったので、ここで少し勉強したいと思います。

投稿フォーマットでは、投稿内容を各フォーマットに合わせて、デザイン・レイアウトを切り替えることができます。
例えば、記事として投稿する場合でも、通常の投稿とは別で、リンク集や画像ギャラリーとしてレイアウトを分けたい場合に役に立ちます。

functions.phpでフォーマットを有効にしてみる

フォーマット機能を有効にするためには、functions.phpで以下を追加するだけです。

MovableTypeは再構築などが重いという印象を持っている人も少なくないかと思いますが。
私も、全体を再構築した場合に、レスポンスが帰ってこずに、そのままタイムアウトということもしばしばあります。特に、Google ChromeでMTを操作すると、管理画面の画面遷移だけでタイムアウトする場合があるのは私だけでしょうか。
画面が真っ白になったりすると、既存のデータは大丈夫?といった不安にかられます。大丈夫なんでしょうけど、万が一、長年蓄えてきた記事、知識、ログが一切失われるとなると、とっても悲しいですね。

そこで、今回、私の環境であるMovableType5.0のバックアップの取得方法です。
そうでなくても定期的に取るべきなんですけどね。

WordPressの記事投稿で、改行を1つ入れるとbrタグ、2つでpタグが自動で挿入されます。
それを前提にテンプレートやCSSが用意されていれば有用なのですが、そうでない場合、例えば独自CMSを開発している場合など、邪魔になるケースもあります。

そこで、フィルター関数を使って、brタグ、pタグが自動挿入されないようにします。
functions.phpに以下の1行を追加するだけです。

このブログもだいぶ技術的な記事が多くなり、大きくカテゴリで分けるようなデザインにしたのですが、そうなると「パンくず」がほしくなってきました。もはやブログっぽくないですね。

まず、ブログ記事については以下のようなコードを記述し、リストをレイアウトしてあげれば「パンくず」を表現できます。

<ul>
<li><a href="<$MTBlogURL$>">HOME</a></li>
<MTEntryCategories>
<MTParentCategory>
<li class="arrow"><a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a></li>
</MTParentCategory>
<li class="arrow"><a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a></li>
</MTEntryCategories>
<li class="arrow"><$MTEntryTitle$></li>
</ul>

表示は「ホーム > カテゴリ > サブカテゴリ > 記事タイトル」となります。サブカテゴリが存在しない場合、つまりそれ自身が親カテゴリに属している場合はMTParentCategoryが無視されるので「ホーム > カテゴリ > 記事タイトル」となります。

最近、MTが重過ぎる。。。
記事が100件を超えたぐらいから、全ページの再構築に5分以上かかるようになってしまいました。最大で10分近くかかることも。
そこで、MTの高速化に効果があるといわれているPHPのモジュール化を試してみました。

MTのPHPモジュール化とは

ずばりMTのPHPモジュール化とは、MTの構成を一部PHP化することで再構築の負荷を減らします。

MTの再構築では記述されたテンプレート内のMTタグがプログラムに解釈され、ページが生成されます。つまりは、MTタグの命令が多いほど再構築には時間がかかります。そこで、MTタグを減らせば再構築スピードも速くなるはずです。

例えば「最新の記事」。「最新の記事」は一般的に全ページのサイドバーに組み込まれます。これをふつうに100ページの記事を再構築するとなると、単純に「最新の記事」を生成するロジックが100回実行されます。もちろん「最新の記事」だけではないので、ページが増えれば累乗的に負荷が大きくなることが理解できます。

そこで、PHPのモジュール化をすると「最新の記事」は一度しか生成しません。生成した結果をPHPで全ページに読み込ませるというしくみです。

WordPressで新規投稿ができなくなりました。。。

管理画面にログインし、新規登録や記事の編集をクリックすると、記事を編集するエディタが表示されるが、5秒ぐらいすると画面が真っ白になり、エディタのボタン部分しか表示されなくなります。
特に何か設定を変更した覚えもなく、急にこのような状況になりました。。。

環境が悪いのかと、いろいろと試したところ、以下の条件で発生することが分かりました。

Monthly Archives