WordPress2.0系のバグ

2007/11/05 | SNS/CMS/ブログ

最近知ったWordPressのバグ。
WordPressの関数でprevious_posts_linkというのがある。カテゴリ表示などする際ページングで使用するための関数だ。本来なら&でつないだ前ページへのリンクURLを作成してくれるはずなのだが、2ページ目表示時の1ページ目に戻るリンクでおかしくなる。「#038;」がURLにはいるのだ。これ、つまり「&」が抜けちゃってるのだ。少しだけ見てみたけれど、いまだ原因を突き止めるにいたっていない(ちょっと手を抜きすぎかも)。
少しGoogled調べてみると、場当たり的な解決策が示されていた。「これイけてねぇ〜」とか思ったけど、面倒なのでそのまま使用した。実際使用したのはprevious_posts_link()と記述するところを以下のように書いた。

<?php // fixes pagination bug
if ($paged>1) {
$link = str_replace(‘#038;’,’&amp;’, get_previous_posts_page_link());
echo ‘<a href=”‘.str_replace(‘&&’,’&’, $link).'”>次へ » </a>';
}
?>

まぁ、いいっていえばいいんだけど・・・。とりあえず関数にしてもいいんだけど、ちょっと場当たりすぎ。新しいバージョン(2.2系)ではおこらないみたいなんだけど・・・、見比べるのが面倒なのでいまだ放置したまま。
時間があれば、解決策を練ることにする。

WordPressのカスタマイズで

2007/10/18 | SNS/CMS/ブログ

WordPress便利!、ということで現在とある案件をWordPressで構築中。MTでもなんでも同じだけど、テンプレートを作るときは専用のタグというものがある。WordPressの場合は特別なテンプレートエンジンというものもなく、単純にPHPの関数をはめ込んでいるだけだから、PHPユーザには大変親和性が高い。極端なお話になってしまうが、希望する関数がない場合はPHPで作っちゃえばいいからだ。
さて「関数をはめ込めばいい」といっても、WordPress内で定義されている関数は大量にある(軽く2000個以上ある)。そんなの全部把握できるわけがない。で、どんな関数があって、どう使えばいいんだろう、と考えてたら便利なサイトを見つけた。

http://wptags.com/

かなり最強の部類に入るサイト!。WordPressのテンプレートで使える関数の引数解説から使い方説明まで至れり尽くせり。すばらしい。

あともう一個。
http://aoina.com/archives/95

テンプレート作るときに、どんなファイル構成になるのか記録されている。ここで紹介されている記事はすごーい便利。うちでももう少し取りまとめてドキュメントを作りたいな。

Xoopsイメージマネージャのバグ

2007/10/11 | SNS/CMS/ブログ

現在Xoopsは旧安定バージョンを使ってるのだけれど、それでもバグがあるようだ。なぜ修正しないのか、それとも気づいてないのか(まさか)・・・不思議(それとも自分だけ?)。
モジュールを作ったりするときに、xoopsCodeTarea関数を使用すると、文字修飾なんかが簡単に出来るようになるが(お世辞にも簡単とは言えないけどね)、それにプラスしてイメージマネージャも利用できるようになる。イメージマネジャーを使うと簡単に画像をアップロードできたり、挿入できるようになったりする。
ここで「画像を挿入しようとイメージマネージャの画面を出したけど、希望の画像がなくてあらためてその画面でアップロードしようとした」ときにエラーが出る。エラーの内容は以下のとおり。

Notice [PHP]: Undefined variable: target in file imagemanager.php line 175

URLの引数で渡された値を使おうとしたけど定義されていない、という感じのエラー。修正はいとも簡単。ちゃんと定義しなおしてあげればいいだけ。このバグ、どうもPHPの設定で、register_globalsがデフォルトでonだった頃の名残のような気がする。

しかし・・・自分が変なファイルをダウンロードしてしまったのだろうか。少なくとも安定版なのだから、こんなバグありえないと思うのだけれど・・・。

さらに・・・WordPrssで携帯対応

2007/10/08 | SNS/CMS/ブログ

WordPressで、さらに携帯閲覧の機能も必要になった。こちらもプラグインは豊富にあるので問題ない。共通のURLにアクセスすれば勝手にPCと携帯で振り分けてくれる。
しかし重要なのは携帯対応+閲覧制限の両方が必要なことだ。WordPressは基本としてクッキーで認証管理をしているようなので、結局いくつかカスタマイズの必要性がありそうだ。

(1) ログインしているかどうかのチェック
 WordPressはクッキーでログイン状態を管理しているので、チェックルーチンに振り分けが必要だ(ノーマル状態ではクッキーが有効でないと認証ルーチンより先に進めない)。これはセッションを使うことになるかな(セッションIDを引数として持ちまわるしかなさそう)。

(2) ログイン画面の振り分け
 基本的にWordPressはUTF-8で動作しているので、当然ログイン画面もUTF-8だ。携帯だとSJISで出力しないといけないので、このままでは文字化けしてしまう。だからログイン画面自体はPCと携帯で振り分け処理をおこなわないといけない。

(3-1) ログイン処理
 WordPressはクッキーで認証管理をしているわけだから、携帯用のログイン処理を書かないといけない。認証OKならセッションに認証済みの状態を書き込む、と。

(3-2) プロフィールの編集はできない
 携帯閲覧用プラグインを入れたとしても、携帯での記事閲覧が可能になるだけで、ログイン後の自分のプロフィール編集は出来ない(だってプロフィール画面はPC用の画面だから)。ログイン後は直接記事ページに飛ばすだけでいいかな、と思う(管理画面へのリンクをはらないだけ・・・。

それでも・・・やっぱり開発工数は少ない。
がんばろっと。

WordPressの閲覧制限プラグイン

2007/10/07 | SNS/CMS/ブログ

ある案件で、「認証による制限をかけたい」というリクエストをいただいた。現状はserendipity(ブログCMS)を使って構築していて(昔はよく使っていたから)、serendipity自体にもプラグインとして認証を組み込むルーチンはあるが、その選択肢は少ない。Basic認証かLDAP認証という2つのプラグインしか見つけられなかった。
これを機会に・・・ということでWordPressに乗り換えることにした。WordPressは古参だけあってプラグインも豊富だ。今回はWordPressへの登録ユーザを利用して認証をおこなうregistered-onlyというプラグインを使ってみることにした。ダウンロードして、ソースコードを見て驚いた。コメントを除けば実質プログラムは6行しかない。

<?php
  function carthik_bouncer() {
    if (substr($_SERVER[‘SCRIPT_NAME’], -12) != “wp-login.php”) {
      auth_redirect();
    }
  }
  add_action(‘init’, ‘carthik_bouncer’);
?>

関数を定義して、コールバック関数でその関数を呼び出す場所を指定している(と推測してみた)だけだ。このプログラムを参考にすれば、もうちょっと工夫したルーチンを書くことが出来そうだ。
当初の予想からずいぶん工数が減った。ラッキー♪。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net