« FireMobile Simulatorを久々更新 Main Javaでの行列演算 »

WordPress: 携帯閲覧時の不具合

Ktai Styleプラグインでの表示の際に、「一覧ページで次へいけない問題」だが、試してみると Firefox の FireMobileSimulator では問題がなく、au の端末シミュレータを試してみようとしたら、こちらはなぜか一時公開停止中…。(結論としては、Ktai Style側の問題ではなく、WPコアのget_pagenum_link()での問題だったようです)。

問題となっている「#.次」のリンクをソースで確認すると「/~oshiro/SiteList/page/2」となっており、このリンク自体は携帯でアクセスしても表示に問題がない。サーバ側でログを見てみると「/~oshiro/SiteList/~oshiro/SiteList/page/2」とここだけ2重になっていたための404アクセスエラーだったようだ(cgiへのpagedパラメータ指定時も同様)。

リンク冒頭に「http://サーバ名」が付いていないためかとも思ったが、他のサイト内リンクも同様の形式でそれらは問題がないようだ。また、このリンクにはアクセスキーが指定されているので、それも原因かと考えたが、Ktai Style から生成されるソース自体を保存すると、こちらの場合はアクセスできている。

どうも、手持ちの携帯への生成リンクがおかしいようなので、そのリンク自体を確認するため Ktai Style で該当箇所を調べてみる。ソース中では「#.Next」を使っているので、これをキーに検索すると次の箇所が見つかった。

shrinkage.php:          $next = ' | ' . _ks_internal_link($link . intval($num +1), '#', __('#.Next', 'ktai_style'), $post_password);
tags.php:               'label' => __('#.Next', 'ktai_style') . '<img localsrc="8" alt=" &raquo;">',

該当の一覧表示でのリンク生成は、tags.php内のks_next_posts_link()で行なわれており、この箇所から辿ると、結局コアのlink-template.php内のget_next_posts_page_link()から呼ばれているget_pagenum_link()で処理が行なわれており、ここで指定ページへのリンクを生成していたのだが、元のアクセスリクエストがURLエンコードされていると、きちんとそれが除去されず残ってしまい、結果として2重の指定のようになっていたのだった。このため、通常のブラウザでも /~oshiro/SiteList/ ではなく、/%7Eoshiro/SiteList/ としてアクセスすると、次ページへのアクセスで同様のエラーが出ていた。

なので、link-template.php で次のようにアクセスリクエストのurldecode()を行なってはどうかと思うんだけど(手持ち分では適用しました)。セキュリティ的な問題があるのかなぁ…。

--- link-template.php.org  2009-07-21 00:45:16.000000000 +0900
+++ link-template.php   2009-07-21 12:07:40.000000000 +0900
@@ -1238,6 +1238,7 @@
        $home_root = ( isset($home_root['path']) ) ? $home_root['path'] : '';
        $home_root = preg_quote( trailingslashit( $home_root ), '|' );

+       $request = urldecode($request);
        $request = preg_replace('|^'. $home_root . '|', '', $request);
        $request = preg_replace('|^/+|', '', $request);

(ところで、テンプレートのスペルってtemplateだったんですね。templeteかと勘違いしてました…)。

それから、重大な問題として、自作のmemo link generatorプラグイン用のデータを含む記事をKtai Style で短縮表示する際に[mlink]~[/mlink]の箇所が途中で切られてしまっていて、プラグインが動作できない。これはプラグインの適用順序などの指定が間違っているんだろうか。

また、どうも縮小画像を含む記事の場合(例: JMF: JMStudioでRTP試し)に、Ktai Styleだとそれらの画像の表示が行なわれないようだ(仕様?)。→追記:縮小画像のみでなく、imgタグにalt=””と空文字列が指定されているか、このように指定されていてもclass属性に「wp-image-数字」の要素を含まないものが表示されていなかったらしい?

Leave a comment

Your comment