Ktai Style マニュアル

よくある質問と答え

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

インストール関連

プラグインを有効にすると "Fatal Error" になる
サーバーの PHP バージョンが 5.0 以降であるか確認してください。Ktai Style は PHP 4 には対応していません。以下のエラーが出るときは確実にサーバーの PHP が 4.x です。
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’
in /****/wp-content/plugins/ktai_style/ktai_style.php on line 60
もしくは、プラグインの有効化を 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 および WP Suer Cache と併用する場合」を参照してください。なお、「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 とほぼ同様です)

問題が発生したときは

携帯電話で閲覧すると白紙画面になる
PHP のバージョン が 5.0 以降であるか確認してください。また、他のプラグインをすべて停止して動作するか確認してください。それでも解決しない場合は、ウェブサーバー (Apache 等) で Ktai Style に関するエラーが出ているか調べて、出ていればその箇所を作者に報告頂けると幸いです。
All in One SEO Pack の「タイトル書き換え」機能と相性が悪いことが報告されています。バージョン 1.33 で対策していますが、もし問題が発生するようなら、All in One SEO Pack を使わないか、少なくとも「タイトル書き換え機能」をオフにしてみてください。
PlayStation Portable で閲覧したら真っ黒になる
PlayStation Portable で閲覧すると真っ黒になることがあります。お使いの携帯テーマで、body 要素に空の内容の bgcolor 属性があると発生します。bgcolor を適切に設定するか、何も色を指定しない単純な <body> という記述に修正してみてください (Ktai Style 1.33 からは附属テーマを適切な記述にしています)。
携帯電話で閲覧すると文字化けする
サーバーの 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 で保存すると文字化けします。テンプレートファイルはほとんど英数字のため、テキストエディターによっては、日本語文字列を追加したとき Shift_JIS で保存してしまうことがあります。UTF-8 (BOM なし) で保存されるよう、ご留意ください。
コメント投稿すると文字化けする
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 にリネームしてください。なお、Ktai Style 1.30 以後は、ktai_style-ja_UTF.mo ファイルも同梱しています。
アクセスログに記録が残らない
デフォルトでは、Counterize II プラグインなど、アクセスを記録するプラグインでログが残らないことがあります。お使いのテーマの header.php で ks_wp_head() をコメントアウトしている箇所を外してください。プラグインによっては、footer.php で ks_wp_footer() のコメントを外す必要があるかもしれません。
3G 端末で見ても画像がインライン表示されない
3G 端末, WILLCOM, スマートフォン等で見たとき画像がインライン表示されない場合は以下の点を確認してください。どうしても原因不明の場合、shrinkage.php の34行目にあるコメントを外してデバッグモードにしてください。この場合、サムネール作成時のエラーがブラウザーに表示されますので、その内容と shrinkage.php のソースコードを突き合わせて原因を調べてみてください。
画像を表示する/リンクに変換のメニューが出ない
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 文のどれかを修正すれば可能です。ただし、変更しないことを推奨します。携帯電話で快適に見えるサイズに調整していますので、あまり大きくすると、端末によっては見えないことがあります。
Amazon の画像をそのまま表示したい
デフォルトでは、外部サイトの画像はリンクに変換されるため、Amazon アフィリエイトの画像もリンクになります。これを画像そのまま表示させるには、image_to-link フックを使います。以下のようなコードを、使用している携帯テーマの functions.php に追加してください (functions.php がなければ作る)。「http://ecx.images-amazon.com/images/」の部分は、実際に挿入される画像 URL にあわせて適宜修正してください。
function ks_keep_amazon_image($replace, $orig, $src) {
	if (preg_match('#^http://ecx.images-amazon.com/images/#', $src)) {
		$replace = $orig;
	}
	return $replace;
}
add_filter('image_to_link/ktai_style.php', 'ks_keep_amazon_image', 10,3);
携帯電話キャリアや端末種別を区別させたい
携帯電話キャリアはテンプレートタグ is_ktai() の返り値で判別できます (DoCoMo, KDDI, SoftBank, WILLCOM, EMOBILE, Unknown のいずれか)。端末種別はテンプレートタグ ks_service_type() の返り値で判別できます。iモード の場合 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 の説明に従って適用してください。
携帯専用ブログにしたい
my-hacks.php に以下のコードを入れれば可能です。以下の7行目から10行目を入れるかわりに、使用するテーマの footer.php で ks_switch_pc_view() を呼び出す部分を削除しても構いません (1行目〜6行目は必須です)。
function ks_reject_pc() {
	$url = parse_url(get_bloginfo('wpurl') . '/');
	if (! preg_match('!^' . preg_quote($url['path']), '!') . 'wp-(admin/|login|includes/)!', $_SERVER['REQUEST_URI'])) {
		exit();
	}
}
add_action('init_pc/ktai_style.php', 'ks_reject_pc');
function ks_delete_switch_pc($html) {
	return NULL;
}
add_filter('switch_pc_view/ktai_style.php', 'ks_delete_switch_pc');
携帯電話ネットワークからのアクセスに限定したい
携帯電話ネットワークからのアクセスに限定する (== PC から携帯電話のユーザーエージェントを名乗ってのアクセスを弾く) には、ks_in_network() テンプレートタグを使い、これが TRUE かどうかを判定すればよいです。ただし、突然 IP アドレス帯域が増えることがあるため、誤判定する可能性があることにご注意ください。携帯電話ネットワーク外のアクセス時に白紙ページを出すならば、以下のコードを携帯テーマの functions.php に書いてください。
function ks_deny_out_of_network() {
	global $Ktai_Style;
	if ($Ktai_Style->ktai && ! $Ktai_Style->ktai->in_network()) {
		exit();
	}
}
add_filter('template_redirect', 'ks_deny_out_of_network', 8);
外部サイトへのリンクを通勤ブラウザ等の変換サービス経由にしたい
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 は、今のところiモード絵文字に対応する画像を収録しており、PC 閲覧時に絵文字を画像として表示します。しかし、EZweb, Yahoo! ケータイ向け絵文字の画像はありません。iモードに似た絵文字であれば画像表示できますが、EZweb や Yahoo! ケータイのみ存在する絵文字は代替文字になってしまいます。
ただし、ご自身で、携帯電話各社が提供する絵文字の利用許可を取り、Ktai Style で使うことは可能です。例えば、利用中テーマに各キャリアごとのディレクトリーを作成し、10進数の絵文字番号 (ウィルコムは16進数3ケタ) をファイル名とした画像ファイルを収納した場合は、以下のようなコードを my-hacks.php に書けば利用可能です。
function ks_other_pict($converted, $number, $alt, $charset) {
	$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, 4);