URLタグの投稿

2008-08-14
晴れ

複数タグでプラグイン最新版へのリンクを作る

ゆりこ による 05:56:17 の投稿
カテゴリー: WordPressハック
タグ: ,

WordPress のタグアーカイブ URL は複数タグが使えるのですが、それを工夫すれば「Ktai Style の最新版アナウンス」の URL を作れます。Ktai Style の記事にはすべて「Ktai Style タグ」 (URL のパス部分は /tag/ktai-style/) を付けているんですが、最新版のアナウンス記事に「最新版タグ」 (URL のパス部分は /tag/latest/) を付けると、これら組み合わせた「Ktai Style 最新版タグ」(URL のパス部分は /tag/ktai-style+latest/ → URL エンコードすると /tag/ktai-style%2Blatest/) が、最新版アナウンス記事を示すようになります。タグアーカイブの URL で、複数のタグをプラス記号 (+) で繋ぐことができるという機能のおかげです。

今まで、新バージョンが出たら、1つ前のバージョンのアナウンス記事から新バージョンへのリンクを張っていました。これだと、もっと古いバージョンの記事を見つけた人にとっては、1つずつ新しいバージョンを辿るしかなく、不便でした。「Ktai Style タグ」アーカイブを見る手がありますが、リリース案内以外に開発日誌っぽい投稿もあるので、最新版に案内するには不向きです。複数のタグを組み合わせたアーカイブ URL を使うことで、うまく解決できるのです。

もちろん、「Ktai Style 最新版」という名前のタグを作ってもいいんですが、それよりは「Ktai Style + 最新版」の方が汎用的です。後者だと「最新版」タグアーカイブを見れば、わたし作のプラグイン最新版が一覧できますから。

まだ「最新版」タグを付与しただけですが、今後、過去のリリース案内を「次のバージョンへのリンク」を「最新版へのリンク」に順次張り換えたいと思います。

本当はもっと前からこのテクニックを使いたかったのですが、「タグの重複問題」があったため、日本語タグにアルファベットのスラッグを付けることができず、あまり実用的ではなかったのでした。WordPress 2.6.1 からやっとタグスラッグがまともに使えるので、この方法が活用できるというわけです。

2008-08-10
晴れ

WP 2.6 にしたらカテゴリー/タグ URL が変わってしまった

ゆりこ による 03:42:38 の投稿
カテゴリー: WordPressハック
タグ: , ,

WordPress 2.6 へのアップグレードを見送っていた当サイトですが、一足飛びに、WordPress 2.6.1 ベータ版にアップグレードしました。2.6 正式版よりもバグが少ないとにらんでのことです ;-)

しかし、困った問題が発生しました。それは、カテゴリー URL が「http://www.yuriko.net/cat/ほげほげ/」→「http://www.yuriko.net/arc/cat/ほげほげ/」に変わってしまったことです。タグ URL も同様に「arc/」がついてしまいます。これは、パーマリンク構造を「/arc/%year%/%monthnum%/%day%/%postname%/」にしているために、先頭にある「/arc/」をカテゴリー URL、タグ URL にも補完してしまっているのでしょう。この挙動は不可思議なので、元に戻してもらいたいですよね……。さっそくチケット #7490を切りましたが、2.6.1 リリースまでに直してもらえるんでしょうか……。当面は、mod_rewrite かリダイレクトで逃げるしかなさそうですが。

[追記] ウチのサイトは「URL を変えない」ことが信条なのに、ソフトウェアの都合で URL 体系を変えられたら、たまったものではありません。とりあえず、wp-includes/rewrite.php をいじって元に戻しました。

450,451c450,454
<                       $this->category_base = 'category';
<               $this->category_structure = trailingslashit( $this->front . $this->category_base );
---
>                       $this->category_structure = $this->front . 'category/';
>               else
>                       $this->category_structure = '/' . $this->category_base . '/';
> //                    $this->category_base = 'category';
> //            $this->category_structure = trailingslashit( $this->front . $this->category_base );
469,470c472,476
<                       $this->tag_base = 'tag';
<               $this->tag_structure = trailingslashit( $this->front . $this->tag_base );
---
>                       $this->tag_structure = $this->front . 'tag/';
>               else
>                       $this->tag_structure = '/' . $this->tag_base . '/';
> //                    $this->tag_base = 'tag';
> //            $this->tag_structure = trailingslashit( $this->front . $this->tag_base );

[追記] 2.6.1 ベータ2で直りました。パーマリンク構造が /archives/%post_id% の場合でも同じ不具合が発生しますから、わりと重度な不具合だったと言えます。

2008-03-31
晴れ

WordPress 2.5 に移行しました

ゆりこ による 21:38:35 の投稿
カテゴリー: WordPressハック,更新履歴
タグ: , ,

長らく PHP+MySQL を利用した独自ウェブログシステムで運営していた Yuriko.Net メインサイトですが、ついに WordPress に移行いたしました。できるだけ従来の見た目になるようにしましたが、所々表示が変わっています。

Yuriko.Net は、1997年のサイトオープン以来、しばらく手書き HTML で作成していました。2000年1月からは、「はいぱー日記システム」を使いましたが、9月ごろに書くのをやめてしまいました。それ以来、2004年8月まで、まったく更新せず放置状態でした。

2004年8月に、手書き HTML ながら見た目をウェブログ風にして運営再開しました。月別アーカイブを1つの HTML として手書きし、フロントページや各記事などを perl スクリプトで静的生成させるシステムを自作しました。

しかし、静的生成システムではコメント・トラックバック機能がないため、PHP+MySQL による独自ウェブログシステムを構築して2006年8月から運用開始しました。当然ながら、WordPress, P-BLOG, Nucleus などのシステムも検討しましたが、「http://www.yuriko.net/arc/2008/03/31a」のようなパーマリンク体系を構築できなかったため、すべて見送って、自作システムとしたものです。自作システムを作るのは、それなりに楽しかったのですが、携帯対応がなかなかできませんでした (perl での静的生成時代は、携帯ページも同時に生成していたのでサービスダウン)。

その反面、WordPress 携帯対応プラグイン Ktai Style がすばらしい仕上りになったため、これを Yuriko.Net で使いたくなりました。また、WordPress の内部構造にも詳しくなったため、「ひょっとすると、ウチのパーマリンク体系を WordPress で使えるんではないか」と考えました。密かに研究した結果、どうにか実現する方法を開発しまして、ついに実現の運びとなったものです。折りしも WordPress 2.5 がリリースされ、表示速度も従来の Yuriko.Net と遜色なくなったこともうれしいことです。

この記事は便宜上従来の URL 体系にしますが、あす 4月1日からは、「http://www.yuriko.net/arc/2008/04/01/SLUG/」のような一般的なパーマリンクにする予定です。今後ともよろしくお願いします。なお、WordPress ネタを扱うウェブログが、WordPress *ではない* システムで動いているのは一興だったのですが、それが解消されてしまうのは、少し残念です!?

[追記 2008-04-02] 個別記事 (シングルポスト) において、カレンダーが投稿日のものではなく、閲覧している日のものになるという不具合があります (この記事も該当)。get_calender() では、どの日のカレンダーを出すかをグローバル変数 $m, $monthnum, $year で制御しますが、これらが正しくセットされていないようです。早めに直したいと思います。

[追記 2008-04-03] なんとか修正しました。WordPress の仕様で、記事番号でクエリーした場合は、$m, $monthnum, $year がセットされないのでした (なので、http://example.jp/?p=1234 のようなパーマリンクの場合、カレンダーは記事のある年月ではなく、閲覧日のものになる)。そこで、むりやり、年月を入れたクエリーを発行させることにしました (query_posts("p=$id&year=$year&monthnum=$monthnum");)。早い目に、この「パーマリンクをごっそり変えてしまうプラグイン」を公開したいと思います。