Yuriko.Net 個別記事

2009-02-22
晴れ

携帯対応プラグイン Ktai Style バージョン 1.48, 1.70 リリース

Ktai Style 1.70 シングルポスト画面

絵文字対応の WordPress 携帯対応プラグイン「Ktai Style」の安定版バージョン 1.70 および、旧安定版 1.48 をリリースいたしました。今回のバージョンから、WordPress のバージョンごとにサポート対象の Ktai Style のバージョンが分かれます。バージョン 1.70 は WordPress 2.5 以降が対象で、旧安定版の 1.48 は WordPress 2.0〜2.3.3 が対象となります。

1.60→1.70 の変更点は次の通りです。

  • 外部サイト接続確認スクリプト redir.php を、外部からの悪用ができないようにしました。また、携帯サイトが見つかったときでも、元のリンク先とホストが異なる場合は中継画面を出すようにしました。(従来は異なるホストでも自動的にリダイレクトしていました) *** これはセキュリティー修正です***
  • WordPress 2.3.3 以前をサポート対象から外しました。動作するかもしれませんが、できれば Ktai Style 1.48 をご利用ください。EUC-JP の言語リソースの添付も中止しました。(UTF-8 の po ファイルから簡単に生成できます)
  • ニンテンドー Wii および DSi でも携帯表示になるようにしました。
  • コメント返信画面
    WordPress 2.7 以降で個別のコメントに返信するときは、コメントフォームの上に、親コメントの内容を表示するようにしました。
  • 携帯電話表示では DISQUS Comment System プラグインを抑制するようにしました。
  • WP Super Cache 0.6.8 以降の場合、手動で .htaccess を書換えなくて済むようにしました。
  • WordPress 2.7 で、コメント投稿時に端末識別情報を必須としているものの、端末識別情報が取得できなかった場合に、PHP のエラーが出るもしくは反応がない不具合を修正しました。
  • Flickr 画像が medium サイズ以外のとき、うまく表示されない不具合を修正しました。
  • Greenテーマ画面 Lovingテーマ画面 Monolithテーマ画面
    Compact テーマは Default テーマに統合しました (ただし、home.php を削除すれば Compact テーマ同等になります)。新たに、Green, Loving, Monolith の3テーマを添付しました。
  • Redportal テーマの多言語化が不十分だったのを修正しました。また、「前の NN 件」「次の NN 件」の言語リソースを Ktai Style 本体に移動しました。他のテーマでもこのローカライズ文字列が使えるようになります。
  • すべてのテーマで、フロントページを固定ページ (静的ページ) に設定しているとき、ブログページ (最新の投稿) へのリンクをフッター部分に追加するようにしました。
  • ?menu=links の URL および ks_list_bookmarks() で表示できるブログロール (リンク集) について、i-mode, EZweb, Yahoo! ケータイ、ディズニー・モバイルの場合、中継ページ経由のリンクになるようにしました (従来はすべて直接リンクになっていました)。
  • 管理パネル (ダッシュボード/コメント一覧) から、コメント返信できるようになりました。
  • Ktai Style 投稿一覧画面
    管理パネルの投稿一覧・ページ一覧に、それぞれの投稿についたコメントの一覧を見られるリンクを付与しました。
  • 投稿やページの本文で2行目以降の行頭にスラッシュ(/)がある場合、携帯閲覧時や携帯での投稿・ページ編集時に行頭のスラッシュが欠落してしまう不具合を修正しました。
  • 年別アーカイブ用のメニュー (menu_years.php) を追加しました。ここで年を選ぶと、その年の月別アーカイブが表示されます。
  • すべてのテーマで、下矢印を示すローカライズ文字列を ↓ に変更しました (従来は「v」という文字を下矢印にしていました)。また、functions.php にあったコメント関連の関数を comments.php に移動しました。
  • iモード端末の場合、big, small 要素が無効のため font size 要素もしくは span style=”font-size:bigger/smaller” に書換えるようにしました。逆に、EZweb 端末の場合、font size=”+1″, font size=”-1″ が効かないため、big, small 要素に書き換えるようにしました。
  • ks_use_appl_xhtml() テンプレートタグによる、HTML からインラインスタイルシートへの変換機能の精度を向上させました。font 要素が入れ子になっていても正常に動作するなどの改良が行なわれています。(Green, Loving, Monolith テーマが対象)
  • 携帯向けページ分割位置を示す start paging, end paging にパラメータを与えれば、分割時の罫線 (<hr />) をカスタマイズできるようにしました。
  • ks_term_name() が au の新機種に対応しました。
  • ks_in_network() がウィルコムの IP アドレス削減に対応しました。
  • ks_comments_link() で、コメント数を示すパラメーターが空文字列のとき、コメント数表示自体をしないようにしました。つまり、コメントがあるときのみコメント数を表示する/コメント停止中のときはその表示自体を隠すようなデザインが可能になります。
  • ks_comments_link(), ks_comments_post_link(), ks_back_to_post() でリンク用文字列を内部で HTML エスエープするのをやめました。このため、HTML を渡すとそのまま表示されます。適宜、テンプレート側で wp_specialchars() などを使って HTML エスケープしておいてください。
  • ks_switch_pc_view(), ks_switch_inline_images() のリンク色を指定できるようにしました。文字の背景色を暗い色にしている場合、リンク色を明るい色に変更して見やすくできます。
  • 次のテンプレートタグを廃止しました: ks_get_ordered_link() (ks_ordered_link() で代替できるようにしました)。
  • 次のテンプレートタグを追加しました: ks_ext_css_available(), ks_page_title(), ks_excerpt(), ks_cut_html(), ks_dropdown_categories(), ks_get_admin_user()
  • 次のテンプレートタグの引数を、配列やクエリー文字列でも可能としました (オプションも増えています): ks_content(), ks_login_link(), ks_ordered_link(), ks_comments_link()
  • external_link フィルターフック用に $icon 引数 (外部サイトを示す絵文字アイコン) を追加しました。絵文字の変更や除去に使えます。
  • split_page_navi フィルターは、sprint() 用のフォーマット文字列ではなく sprint() フォーマットした後の HTML 文字列を渡すようにしました。
  • 次の独自フィルターフックフィルターフックを追加しました: redir_error

1.47→1.48 の変更点は次の通りです。

  • 外部サイト接続確認スクリプト redir.php を、外部からの悪用ができないようにしました。また、携帯サイトが見つかったときでも、元のリンク先とホストが異なる場合は中継画面を出すようにしました。(従来は異なるホストでも自動的にリダイレクトしていました) *** これはセキュリティー修正です***
  • サポート対象を WordPress 2.3.3 までとしました。WordPress 2.5 以降では Ktai Style 1.61 以降をご利用ください。
  • ニンテンドー Wii および DSi でも携帯表示になるようにしました。
  • 携帯電話表示では DISQUS Comment System プラグインを抑制するようにしました。
  • 投稿やページの本文で2行目以降の行頭にスラッシュ(/)がある場合、携帯閲覧時や携帯での投稿・ページ編集時に行頭のスラッシュが欠落してしまう不具合を修正しました。
  • WordPress 2.0 において、コメント投稿時にコメント本文など必須項目を入力していない場合や、外部サイト接続確認を表示しようとすると PHP のエラーもしくは白紙画面になる不具合を修正しました。
  • WordPress 2.0 で <!--nextpage--> でページ分割させた場合、menu_links.php テンプレートを表示させたとき、または ks_list_bookmarks() を使ったとき、画面が途中で途切れる不具合を修正しました。
  • Redportal テーマを EUC-JP 環境でも文字化けしないようにしました。
  • ks_use_appl_xhtml() テンプレートタグによる、HTML からインラインスタイルシートへの変換機能の精度を向上させました。font 要素が入れ子になっていても正常に動作するなどの改良が行なわれています。(ただし、附属テーマは ks_use_appl_xhtml() を使用していません)
  • ks_term_name() が au の新機種に対応しました。
  • ks_in_network() がウィルコムの IP アドレス削減に対応しました。
  • 次のテンプレートタグを追加しました: ks_cookie_available(), ks_ext_css_available(), ks_get_next_num()
  • split_page_navi フィルターは、sprint() 用のフォーマット文字列ではなく sprint() フォーマットした後の HTML 文字列を渡すようにしました。
  • 次の独自フィルターフックフィルターフックを追加しました: redir_error
WordPress 2.5 以降用: ktai_style170.zip (517.3 KB)
より新しいバージョンが出ています。
WordPress 2.0〜2.3.3 用: ktai_style148.tar.bz2 (256.6 KB)
13:50ごろ、ドキュメントを直した版に差し替えました。

今回から、予告通り WordPress のバージョンによって、サポート対象の Ktai Style を分離しました。WordPress 2.3.3 以前を使っている人には申し訳ないですが、Ktai Style 1.48 をご利用頂くか、WordPress をバージョンアップして頂きますようお願いします。(追記: WordPress 2.3 以降は UTF-8 版しか存在しないため、Ktai Style 1.70 はEUC-JP の言語リソース添付を中止しました。EUC-JP を利用する数少ない例外は XOOPS モジュール版 WordPress の XPressEUC ぐらいだと思いますが、これの利用者の方には手動で ktai_style-ja_EUC.mo を作って頂きますようお願いします。Ktai Style 1.48 の方は EUC-JP の言語リソースがあります)

Ktai Style 1.48, 1.70 における大きなトピックは、外部サイト中継用スクリプト redir.php の悪用対策を打ったことです。Ktai Style 0.97 ごろから、外部サイトへのリンクに中継ページを使うようにしましたが、このときは必ず中継ページが出たため悪用する意味がありませんでした。しかし、バージョン 1.40 から相手先に携帯サイト URL を示す Mobile Link Discovery があるか確認し、あればそこに自動的にリダイレクトさせるようにしました。これによって、任意の Ktai Style 利用サイトにある redir.php を経由して悪意あるサイトにリダイレクトする URL を作ることができてしまいます。ただし、redir.php への接続は従来から携帯端末に限定してたため悪用は困難でした。今回、一定時間ごとに変化するランダムな文字列 (ノンス) をキーとして redir.php に与えることを必須としたため、悪用はさらに難しくなりました (コメントやトラックバック等で悪意あるサイト URL を送り込んで携帯サイトに表示させるしかない)。

ホストが違うときの中継ページ画面

また、携帯サイト URL を発見したときでも、ホスト名が元のサイトと異なる場合は「怪しい」と判断して中継ページを出すようにしました。世の中には、ネタフルのように、マトモなサイトであっても PC サイト (netafull.net) と携帯サイト (netafull.jp) のホスト名が違う場合がありますが、こういう事例は例外に近いでしょう。作者としては、PC サイトと携帯サイトの URL が同一であるべきと思います。

Yuriko.Net では、アクセスログを見る限り悪用された形跡はなさそうなのですが、さらなるセキュリティー向上をめざして、対策を打つことにしました。Ktai Style 附属テーマをそのまま使っている場合は、特に作業は不要です。自作テーマにおいて独自の redir.php テンプレートを作っている場合は、修正が必要です (附属ドキュメントや附属テーマを参照してください)。お手数をおかけしますが、よろしくお願いします。

Ktai Style 1.70 の開発におきましては、多くの方から頂いた改善案や不具合報告が助けになりました。まことにありがとうございます。今後も、お気軽に、質問・要望・不具合報告を寄せて頂ければ幸いです。

トラックバック・コメント »

  1. イチローさん:

    ひとつ教えてほしいのですが、フォントサイズを小さくするにはどうしたらよいのでしょうか?

    実はスタイルシートに関する知識が必要で、ちょっと難しいです。

    フォントサイズを小さくするだけならば、font タグを使って <font size="-1">...</font> とすればいいのですが、font 要素はインライン要素のため、ブロック要素 (div, p, ul, dl, form などなど) の外側に置くことができません (ブロックレベル要素とインライン要素)。したがって、携帯テーマの先頭に <font size="-1"> と置いて、最後に </font> と置くのは文法違反になります。携帯端末によっては、このような文法違反でもうまく表示されることがありますが、逆に、字が全然小さくならないこともあります。

    したがって、ブロック要素の内側それぞれで font タグを入れてやる必要があります。しかし、投稿本文は、WordPress によって、自動的に p 要素や div 要素で囲まれてしまうため、ks_content() のすぐ外側で font size="-1" とするのは不可能です。

    このような状況を回避するには、スタイルシートを使って、ブロック要素に対して font-size:x-small というスタイルを適用してやればうまくいきます。スタイルシートは、3G 端末でないと適用されませんが、そもそも古い端末ではフォントサイズを小さくできないので、ほとんど問題ありません。ウィルコムのように、フォントサイズの可変には対応しているもののスタイルシートが使えない場合に対応できないぐらいです。

    で、具体的には、字を小さくしたい部分を <div style="font-size:x-small;">...</div> で囲ってやればよいです。smaller という相対指定は EZweb が解釈できないため、small, x-small とかにすることが必要です。ただし、端末側の文字サイズ設定により、small, x-small などが効かないことがあります(「小」だと small, x-small が効かない、「細小」だと small が効かない等) 。12px, 10px とかの数値設定だと端末のサイズ設定に左右されないのですが、12px, 10px という指定はドコモでは反映されないという欠点があります。ソフトバンク 3G は、small, smaller, 12px どれも有効です。「EZweb のときだけ数値指定にする」「ドコモのときだけ small,x-small という指定にする」などの判別が必要だと思われます。

    Ktai Style の附属テンプレートでは、<font size=”-1″> を使っていて、機種判別により適宜 <small> 要素に変更しています。しかし、div style=”font-size” には対応していません。今後対応を検討してみます。

    すべてのページのカナを半角にする方法はわかったのですが、、、

    個人的には、半角カナを使うのは美しくなく、読みにくくなると思うので、おすすめしません。液晶画面が小さかった時代には「多くの情報を入れる」ために必要悪として導入されましたが、現在の携帯端末では不要だと思います。特に、フォントを小さくするデザインを行うならば、半角化をすると可読性が落ちる可能性があるので、慎重に検討してみてください。

上に戻る

※スパム対策プラグインの影響により、すぐにトラックバックが反映されない場合があります。お手数ですが、半日ほど待ってみてください。

コメント返信

※発言の責任を明確にするため「名無し」「通りすがり」「匿名希望」等の匿名は不可とします。捨てハンドルでもいいので必ず名乗ってください。
XHTML (使えるタグ): <a href="" title="" ktai=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt=""> .
※スパム対策プラグインの影響により、すぐにコメント内容が表示されない場合があります。お手数ですが、半日ほど待ってみてください。

上に戻る