Ktai Style マニュアル

よくある質問と答え

Ktai Style に関して、附属ドキュメントに掲載されていない疑問点やノウハウなどを掲載します。ここにない質問があれば、まず、附属ドキュメントをよく読んでみてください。それでも解決できなければ、作者にメールするか、WordPress Japan の「日本語版プラグイン配布処」で質問してください。

インストール関連

プラグインを有効にすると "Fatal Error" になる
サーバーの PHP バージョンが 5.2.0 以降であるか確認してください。Ktai Style は PHP 4 および PHP 5.1.6 以前には対応していません。
もしくは、プラグインの有効化を PC から行なっているか、User Agent Switcher 等でブラウザーのユーザーエージェントが携帯電話になっていないかを確認してください。携帯電話やスマートフォンからプラグインを有効にしようとすると、auth_redirect() 関数を二重定義することになってエラーになります。
wp-content/plugins ディレクリーにファイルを入れるだけでいいのか
はい、wordpress のルートディレクトリーにインストールするファイルはありません。Mobile Eye/Mobile Eye+ と違って、コメント受け付けスクリプト comments_post.phpも ktai_style フォルダーに入れてあります。
管理画面の設定をどう変更すればいいか分からない
管理画面の「携帯表示」での設定は変更しなくてもそのまま使えます。初期状態で万人向けの設定に最適化されていますので、よく分からない場合はそのままで結構です。
PC 版テーマが default に戻る
Ktai Style バージョン 1.00 から、携帯テーマで style.css を必須にしました。自作携帯テーマを作っている場合、バージョン 0.99 以前からのアップグレードを行うときには、あらかじめ、自作テーマに style.css を入れる必要があります。入れていない場合、WordPress コアが「不正なテーマ」と判断して、(ちょっと変ですが) PC 版テーマを default に戻してしまいます。(バージョン1.00 のみ。バージョン 1.01 以後 PC テーマは変更されません)
自作テーマを使っていないのに、PC 版テーマが default に戻る場合は、お使いの携帯テーマで index.php, style.css の両方のファイルが存在するか確認してください。
WP Cache 等のキャッシュプラグインと併用したい
現状では、キャッシュプラグインとの併用は考慮していません。wp-cache-phase1.php で、ユーザーエージェト判別コードを挿入し、携帯電話の場合はキャッシュしないようにバイパスすればいいかもしれません (タイミング的に、is_ktai() 関数は使えません)。なお、「Mobile Eye+とWP-Cacheを併用する」のテクニックは、Ktai Style では不具合が起きます (携帯キャリアごとに絵文字が違ったり、分割位置が違うため)。
携帯サイトの URL を別にしたい
Ktai Style の現在のバージョンでは困難です。Ktai Style は、WordPress コアがリクエスト URL を解析し、テンプレートを呼び出す段階で携帯サイト用テンプレートに差し替える仕組みになっているためです。将来のバージョンでは可能にするかもしれませんが、期待しないでください。

仕様に関して

パケット節約はどう行なっているか
Ktai Style は、パケット節約のため、以下のような XHTML 書き換えを行っています。相当なパケット数削減となると考えています。
サーバーへの負荷はどれぐらいか
ウェブログコンテンツの読み込みは、WordPress の標準 API を使っているため、PC 向けサイトを表示するときの負荷とほぼ同等です。MT4i のように携帯版だけ負荷が高くなるという現象は、おそらく発生しません。(ちなみに、Mobile Eye/Mobile Eye+ の負荷も Ktai Style とほぼ同様です)

問題が発生したときは

携帯電話で閲覧すると白紙画面になる
WordPress のバージョンが 2.2 以降であることを確認してください。Ktai Style は WordPress 2.1 から導入された API を使っているため、WordPress 2.0.x 以前では白紙になる可能性が大です (特にカテゴリー一覧画面)。WordPress 2.1 でも動くかもしれませんがテストしていません (バージョン 2.1.x はサポート終了しています)。
携帯電話で閲覧すると文字化けする
サーバーの php.ini や .htaccess で mbstring.encoding_translation = Off かつ mbstring.http_output = pass にしてください。Ktai Style は、携帯電話向けに Shift_JIS コードに変換していますが、encoding_translation = Onhttp_output が UTF-8 や EUC-JP になっていると、それらの文字コードに再変換されてしまい、携帯電話で見ると化けてしまいます。
携帯テーマを改造したら文字化けした
携帯電話での出力は Shift_JIS ですが、携帯テーマは、PC 版テーマと同じ文字コード (UTF-8) で記述してください。Shift_JIS で保存すると文字化けします。テキストエディタによっては、附属テーマのテンレートファイルを UTF-8 と認識せず、Shift_JIS で保存してしまうことがあるため、ご注意ください。
コメント投稿すると文字化けする
Ktai Style 0.99 以降にアップグレードすれば解決します。また、言語リソース (ktai_style-ja.mo) が読み込まれているか確認してください。管理画面の「携帯表示」や、携帯電話画面が所々英語になっていれば、読み込まれていません。wp-config.php の WPLANG が "ja" であるか確認してください。"ja_UTF" のまま使っている場合、ktai_style-ja.mo を ktai_style-ja_UTF.mo にリネームしてください。
携帯電話で閲覧すると英語になっている個所がある
wp-config.php の WPLANG が "ja" であるか確認してください。WordPress ME 2.1.x 以前からのアップグレードで、"ja_UTF" のまま使っている場合、ktai_style-ja.mo を ktai_style-ja_UTF.mo にリネームしてください。
アクセスログに記録が残らない
デフォルトでは、Counterize II プラグインなど、アクセスを記録するプラグインでログが残らないことがあります。お使いのテーマの header.php で wp_head() をコメントアウトしている箇所を外してください。プラグインによっては、footer.php で wp_footer() のコメントを外す必要があるかもしれません。
3G 端末で見ても画像がインライン表示されない
3G 端末, WILLCOM, スマートフォン等で見たとき画像がインライン表示されない場合は以下の点を確認してください。
画像を表示する/リンクに変換のメニューが出ない
3G 端末等でアクセスしたとき、画面下部に「画像を表示する/リンクに変換」のメニューが出ない場合は、使用しているテーマの footer.php に <?php ks_switch_inline_images(); ?> が記述されているか確認してください。挿入位置などは、default テーマの footer.php を参考にしてみてください。

携帯サイトの見栄えやテーマ作成に関して

ヘッダ画像を入れたい
まず、ヘッダ画像を作ります。多くの端末で見られるよう、画像サイズは横幅160ピクセル、縦幅36ピクセルぐらい、ファイルサイズは 2KB 前後に留めてください。JPEG 型式もしくは、PNG, GIF の両方の型式を作って、自作テーマのフォルダに入れます。次に、header.php において <h1><?php echo get_bloginfo('name'); ?></h1> と書かれている部分を以下のように置き換えてください (ヘッダ画像のファイル名は適宜読み替えること)。
<h1 align="center"><img src="<?php ks_theme_url(); ?>logo.png" alt="<?php echo get_bloginfo('name'); ?>" /></h1>
はい。これは著作権表示ではないため、削除しても Ktai Style のライセンス (GPL) に違反しません。単に Ktai Style の宣伝のために付与しているものです ;-)
1画面に表示される投稿数を変えたい
PC 用管理画面の「表示設定」で、「1 ページ内の投稿数」を変更してください。ページ番号つき URL (http://blog.example.jp/page/3/ のような URL) でも、PC と携帯の表示を同じにするために、携帯電話だけ表示数を減らすことはできません。
カタカナを半角カナに変換させたい
附属の classic テーマを使ってください。もしくは、classic テーマの functions.php をお使いのテーマにコピーしてください。このファイルの中の、ks_convert_kana() 関数で半角カナ変換を行っており、その下にある add_filter() で変換を有効にしています。
Ktai Style が作るサムネールを大きくしたい
shrinkage.php にある define 文のどれかを修正すれば可能です。ただし、変更しないことを推奨します。
WordPress が作るサムネールはデフォルトで長辺側が128ピクセルです。このサイズは比較的小さいため、携帯電話に表示していいのですが、実際には、WordPress を改変してサムネールサイズを長辺側160ピクセル、256ピクセル等に修正しているユーザーがおられます (プラグイン作者も160ピクセルにしています)。このため、WordPress が作るサムネールを携帯電話用に使うのはあきらめ、独自に長辺が96ピクセルのサムネールを生成しています。これより大きいサイズに変更することは、WordPress デフォルトのサムネールと使い分ける意味がなくなってしまうため、おすすめしません。
携帯電話キャリアや端末種別を区別させたい
携帯電話キャリアはテンプレートタグ is_ktai() の返り値で判別できます (DoCoMo, KDDI, SoftBank, WILLCOM, EMOBILE, Unknown のいずれか)。端末種別はテンプレートタグ ks_service_type() の返り値で判別できます。i-mode の場合 mova, FOMA のいずれか、EZweb の場合 HDML, WAP2.0 のいずれか、SoftBank の場合 PDC, 3G のいずれか、WILLCOM の場合 AIR-EDGE、イー・モバイルの場合 EMnet という値になります。ディズニー・モバイルは SoftBank 3G とみなします。
WILLCOM 用テーマを設定しても W-ZERO3 シリーズで適用されない
WILLCOM 用テーマは音声端末 (WX シリーズなど) のみ適用されます。W-ZERO3 シリーズは Windows Mobile 採用のスマートフォンなので、WILLCOM ではなく「その他」端末扱いとなり、共通設定テーマが適用されます。
イー・モバイル用テーマを設定しても EM・ONE や EMONSTER で適用されない
イー・モバイル用テーマは、通常の音声端末 (2008年3月時点では H11T のみ) に適用されます。EM・ONE や EMONSTER は Windows Mobile 採用のスマートフォンなので、「その他」端末扱いとなり、共通設定テーマが適用されます。
スタイルシートを使いたい
各社 3G 端末は、限定的ながらスタイルシートに対応しています。ただし、ドコモのスタイルシート対応 (i-CSS) は、インライン CSS にしか対応していません。Ktai Style では、header.php の1行目に <?php ks_use_appl_xhtml(); ?> と書けば、スタイルシートに対応できます (スタイルシートの利用方法)。
ただし、自作テーマに直接スタイルシートを書いた場合、旧端末用に変換はされません。この場合、mova, SoftBank PDC 用テーマと、FOMA, EZweb, SoftBank 3G, WILLCOM, EMOBILE 用テーマそれぞれ2種類を作って、設定で使い分ける必要があります。
MT4i みたいに、カテゴリーのポップアップメニュー (プルダウンメニュー) を付けたい
携帯テーマを改造すれば可能です。index.php に以下のようなコードを入れてください。カテゴリーが多数あるときは、mova, SoftBank PDC など表示サイズが厳しい端末で常にページ分割が発生してしまうため、こういうインターフェースを使うことはおすすめしません。Ktai Style のデフォルトテーマで採用していないのもそういう理由です。
<div align="center"><form action="<?php ks_blogurl(); ?>">
<?php wp_dropdown_categories('show_option_all=すべて'); ?><input type="submit" value="選択" />
</form></div><hr />
モバイル Google Adsense を入れたい
特に問題なく使用できるようです。Google の説明に従って適用してください。
携帯専用ブログにしたい
以下のようにすれば可能です (ただし試験していないので自己責任で)。
  1. ktai_style.php の85行目 $this->init_pc($admin_dir); の次の行に、以下のコードを追加する。
    if (! preg_match('/wp-admin|wp-login/', $_SERVER['REQUEST_URI'])) {
    	exit;
    }
  2. tags.php の1345行目 ks_switch_pc_view() 関数の echo 文をコメントアウトする。
外部サイトへのリンクを通勤ブラウザ等の変換サービス経由にしたい
external_link フックに独自の変換関数を割り当ててリンク先 URL を変更すれば、いきなり変換サービス経由リンクにできます (バージョン 1.00 から利用可能)。もしくは、redir フックで中継ページの文言を変更することも可能です (バージョン 1.20 から利用可能)。以下のようなコードを、利用中テーマの functions.php に書けば、MT4i と似た中継ページにできます。
function ks_sjk_redir($html, $url) {
	$html = '<p>別のサイトへジャンプしようとしています。</p><p>↓クリック<br /><a href="' 
	. attribute_escape($url) . '">' . attribute_escape($url) . '</a></p>';
	$sjk_link = 'http://www.sjk.co.jp/c/w.exe?y=' . rawurlencode(preg_replace('|^http://|', '', $url));
	$html .= '<p>上記URLのサイトは携帯電話で正しく表示できないかもしれませんが、下記URLであれば表示できるかもしれません。</p>' 
	. '<p>↓クリック<br /><a href="' . $sjk_link . '">' . $sjk_link . '</a>'
	. '</p><hr /><p>前のページへは携帯電話の戻るボタンで戻ってください。</p>';
	return $html;
}
add_filter('redir/ktai_style.php', 'ks_sjk_redir', 10, 2);
PC 閲覧時に携帯電話絵文字を画像で出したい
Ktai Style は、今のところ携帯絵文字用の画像を収録しておらず、PC 閲覧時は <img localsrc="XXXX" /> フォーマットの絵文字は代替文字に変換してします。ご自身で、携帯電話各社が提供する絵文字の利用許可を取り、Ktai Style で使うことは可能です。例えば、利用中テーマに各キャリアごとのディレクトリーを作成し、10進数の絵文字番号 (ウィルコムは16進数3ケタ) をファイル名とした画像ファイルを収納した場合は、以下のようなコードを my-hacks.php に書けば利用可能です。
function ks_other_pict($converted, $number, $alt) {
	$image = '';
	if (preg_match('^/d(\d+)$/', $number, $n)) {
		$image = '<img src="' . ks_theme_url() . "imode/{$n[1]}.gif" . '" alt="' . $alt . '" />';
	} elseif (preg_match('/^(\d+)$/', $number, $n)) {
		$image = '<img src="' . ks_theme_url() . "ezweb/{$n[1]}.png" . '" alt="' . $alt . '" />';
	} elseif (preg_match('/^se([0-5])([\da-f]+)$/', $number, $n)) {
		$offset = array(0, 90, 180, 270, 347, 423);
		$num = $offset[$n[1]] + hexdec($n[2]);
		$image = '<img src="' . ks_theme_url() . "softbank/$num.png" . '" alt="' . $alt . '" />';
	} elseif (preg_match('/^wf([01][\da-f]+)$/', $number, $n)) {
		$image = '<img src="' . ks_theme_url() . "willcom/{$n[1]}.png" . '" alt="' . $alt . '" />';
	} elseif (preg_match('/^e(\d+)$/', $number, $n)) {
		$image = '<img src="' . ks_theme_url() . "emobile/{$n[1]}.png" . '" alt="' . $alt . '" />';
	} else {
		$image = is_null($alt) ? $converted : $alt;
	}
	return $image;
}
add_filter('convert_pict_other/ktai_style.php', 'ks_other_pict', 10, 3);
Ktai Style は GPL ソフトウェアであり、携帯電話各社が提供する絵文字データは、それぞれのライセンスが GPL と矛盾するために、収録することができません。あしからずご了承ください。PC やスマートフォン向けの絵文字画像を独自で作成すれば収録可能ですが、文字数が多いため、今のところ作成する予定はありません。