# Ktai Style マニュアル

[ はじめに | 改版履歴 | サイト設定とテンプレートの改造 | ウェブログ管理機能 | よくある質問と答え ]

## サイト設定とテンプレートの改造

ここでは、携帯サイトの見た目を変更する方法を説明します。管理画面での設定による方法と、携帯表示用テンプレートの改造による方法があります。

### 管理パネルの「携帯表示」設定

#### テーマ

使用するテーマを選択します。初期状態では以下の6つのテーマがあります。「スタイルシート利用」と書かれたテーマは、mova, ソフトバンク PDC、ウィルコムにおいて、白抜き文字部分が反映されず、少し貧弱な表示になります。

- Default: Ktai Style のデフォルトテーマ。home.php を削除すればタイトルのみ羅列のコンパクトな見栄えになります
- Classic: まおう氏の Mobile Eye+ に似たテーマ
- Green: 緑色ベースの明るいテーマ。スタイルシート利用。蝶のアイコン (icon.gif) の他に、羽根 (icon-feather.gif)・向日葵 (icon-sunflower.gif) を添付しており、差し替えて使用可能です。
- Loving: ピンクベースの可愛らしいテーマ。スタイルシート利用。ゴシック風のフレームを使うヘッダ (header.php) の他に、ラッパから星が吹き出す可愛いヘッダ (header-bugle.php)・くちびると星を散らばめた派手なヘッダ (header-lip.php) を添付しており、ファイル名を差し替えて使用可能です。
- Monolith: 灰色ベースのシックなテーマ。スタイルシート利用。
- Redportal: livedoor Blog に類似させた赤色ベースのテーマ

携帯電話キャリアごとにテーマを変更できますが、通常は「共通テーマと同じ」のままで構いません。

#### 動作

携帯サイトの見栄えを変更できます。

コメントフォームや投稿内容での絵文字入力
  コメントフォームや、携帯管理画面での投稿内容において、携帯電話絵文字を使えるようにします。「許す」を選択すると、絵文字を検出して `<img localsrc="NNN" />` のフォーマットに変換します。「認めない」を選択すると絵文字を削除します。
コメントとピン通知 (トラックバック/ピンバック)
  デフォルトでは、各記事および最新コメント一覧において、コメントとトラックバック・ピンバックを混在して表示しますが、二者を分離できます (トラックバックとピンバックは分離しません)。
  なお、各記事についている「コメントn件」の件数については、コメントとトラックバックを合わせた数です (分離はできません)。
コメント投稿者の端末識別情報
  「送信が必須」を選ぶと、ログインしていない場合、ドコモ、au、ソフトバンク、イー・モバイル音声端末からのコメント投稿時に、端末識別情報 (iモードID、EZ番号、ユーザーID 等) を送信しないと受け付けられなくなります。また、送信された端末 ID は、ユーザーエージェントの後に付与してデータベースに保存されます。管理パネルのコメント編集画面 (PC では WordPress 2.5 以降のみ) で確認できます。もしくは、phpMyAdmin 等で wp_comments テーブルの comment_agent カラムを見れば確認できます。
  - Term ID: 電話機製造番号
  - USIM ID: USIM ID
  - Sub ID : 契約者ID (iモードID、EZ番号、ユーザーID など)
  なお、ウィルコム端末、その他端末 (スマートフォン、PSP 等) では、「送信が必須」にしても端末 ID なしでコメント可能です。また、ログインしている場合は、端末識別情報なしにコメント可能です。
  「必須でない」の場合、端末識別情報の検出を行なわず、データベースへの保存も行いません。
  *** 注意 ***「送信を必須」にしても、フルブラウザ・PC サイトビューアー等に切り換えれば端末識別情報なしにコメントできるため、回避可能です。また、端末識別情報は、他のサイトにも同じ ID が送信されるという繊細な個人情報です。これを蒐集することは他人の個人情報を保存するというリスクが発生します。荒らしに悩んでいるなど、リスクよりもメリットが大きい場合でない限り「必須にする」を選択しないことをおすすめします。
直接リンクを張るサイト
  このフィールドに記入された URL へのリンクは、中継ページ経由のリンクにせず普通にリンク (直接リンク) します。携帯電話対応サイトの URL を記入すると便利です。この設定を使わずに、それぞれの a 要素に class="ktai" と記載しても、直接リンクするようになります。なお、特定のブログサービスおよび Mobile Link Discovery を埋め込んでいるサイトは、自動的に携帯版サイトを検出しますので、このフィールドに URL を書く必要はありません。

※バージョン 0.97 以降、外部サイトへのリンクは原則として残すことにしました。もし、外部サイトへのリンクを一律に削除したい場合は、使用している携帯テーマの functions.php に以下のコードを入れてください。

    <?php
    function ks_delete_external_links($link_html, $href, $label, $icon) {
    	return $label;
    }
    add_filter('ktai_external_link', 'ks_delete_external_links', 90, 4)
    ?>

逆に、外部リンクを一律に直接リンクしたい場合は、使用している携帯テーマの functions.php に以下のコードを入れてください。

    <?php
    function ks_direct_external_link($link_html, $href, $label, $icon) {
        return '<a href="' . attribute_escape($href) . '">' . $label . '</a>';
    }
    add_filter('ktai_external_link', 'ks_direct_external_link', 90, 4);
    ?>

#### 文字色

要所要所の文字色を変更できます。設定値は #rrggbb の16進表記で記述します。HTML では一般的な書式です。値を入力すると、リアルタイムに色見本が変更され、色の確認がしやすくなっています。なお、Ktai Style の標準テーマ以外では設定が反映されない場合があります。

- 記事タイトル一覧の横に表示する日付
- 記事本文に表示する投稿者・日付
- コメント種別 (コメント／トラックバック／ピンバック)
- PC 向けサイトへのリンク文字列

※背景色・通常の文字色・リンク色・訪問済みリンク色は、設定画面ではなく、テーマの header.php を改造してください。bgcolor, text, link, alink, vlink 属性を入れた body 要素をコメント化して準備してありますので、既存の body 要素と入れ換え、属性値を設定すれば OK です。使わない属性値は削除してください。なお、text 要素を設定した場合、iモード絵文字はデフォルトの色ではなく、すべて text 属性で指定した色になってしまいます。デフォルトの絵文字色を生かしたい場合は text 属性は使わないでください。

#### 投稿・コメントの日時書式

投稿やコメントの日付および時刻書式を変更できます。WordPress 一般設定の日付書式は、原則として使っていません (記事タイトルの上に表示する日付は一般設定を適用)。

これは、「今年の日付は年を省略して表示する」「今日の日付は時刻のみ表示する」という短縮処理を行うためです。したがって、それぞれの状況に応じて書式を設定する必要があります。

フォーマットに使う文字列は WordPress の設定画面と同じ (PHP の `date()` 関数と同じ) です。

去年以前の日時
  デフォルトでは `Y-m-d` という ISO フォーマットです。スラッシュ区切りや日本語表記に変更して構いません。なお、年・月・日を示す文字それぞれが含まれる必要があります。
  OK な例: `Y/m/d , Y年n月j日, M jS, Y`
  ダメな例: `n/j, Y年n月`
今年の日時
  デフォルトでは、スラッシュ区切りの月日と時分を表示する `n/j H:i` という書式です。年省略では ISO フォーマットは不自然なためです。少なくとも月・日を示す文字列それぞれが含まれる必要があります。時分は省略可能です。
今日の日時
  投稿やコメントが今日の場合のフォーマットです。デフォルトは秒を省略した `H:i` となります。日または時が必須です。

### テンプレートの改造

本プラグインのテンプレートは、WordPress のテーマとほぼ同じ構造です。このため、WordPress のテーマを制作・改造したことがあれば、同じ要領で改造することができます。附属テーマの色を変更する改造をウェブで解説していますので、こちらも参照ください。

独自のテーマを作るときは、既存テーマのフォルダーを複製して好きな名前を付け、その複製に対して作業してください。default テーマを直接改造することは避けてください。独自テーマは、wp-content/ktai-themes/ ディレクトリーを作成して、そこに格納することをおすすめします。また、style.css を開いて、テーマ名称などを独自のものに変更しておいてください (style.css の書式は後述)。ktai-style/themes/ ディレクトリーに入れたものは、プラグインを自動アップデートすると消されます。

なお、プラグインのソースコードおよびテンプレートは原則として英数字のみで記述されています。改造時に日本語文字列を入れる場合は、「ウェブログの文字コードと同じコード」(たいてい UTF-8) で保存してください (Mac, Windows のテキストエディターの場合、英数字のみのファイルに日本語を追加すると Shift_JIS で保存することが多いため要注意!!)。

併用する他のプラグインは、携帯電話表示のとき動作しないものがあります。この場合、header.php で `ks_wp_head()` の引数を `KTAI_DO_PC_HEAD` に変更したり、footer.php で `ks_wp_footer()` の引数を `KTAI_DO_PC_HEAD` に変更すると動作する場合があります (デフォルトではこれらの引数は `KTAI_NONE_PC_HEAD`)。

Green, Loving, Monolith, Redportal テーマは、それぞれの header.php でカラーテーマを定義しています。ここを変更すると、罫線色、見出しの背景色などを一括して変更できます。ただし、シングルポスト (single.php) やコメント一覧 (comments.php) などで、独自に色を定義している場合もあります。

Green, Loving テーマでは、アイコン画像・フレーム画像の代替品を添付しています。デフォルトの蝶アイコンやゴシック風フレームと差し替えれば利用可能です。画像ファイル名を変更するか、header.php でファイル名を指定する部分を変更するかしてください。Loving テーマの場合、フレーム画像を変更するのは少し難しいため、header.php 自体を置き換えるようにしています (header-bugle.php, header-lip.php を header.php にリネームする)。

### 附属テンプレートファイル一覧

#### WordPress 標準テンプレート

style.css
  テーマの名称、配布元、説明、バージョン、作者、ライセンス、動作する Ktai Style のバージョンを記述するために使用しています。バージョン 1.00 から必須のテンプレートとなりました (存在しない場合携帯テーマとして認識されません)。一部のテーマではスタイルシートとしても使用しています。詳しい書式は以下の通りです。
  - Theme Name: テーマ名称 (必須)。日本語文字列も使えます。
  - Theme URI: 配布元 URI (オプション)
  - Version: バージョン (オプション)。x.y.z 形式を推奨します。
  - Description: 説明 (オプション)。日本語文字列も使えます。
  - Author: 作者名 (オプション)。日本語文字列も使えます。
  - Author URI: 作者のウェブサイト URI (オプション)
  - Requires: 必須とする Ktai Style, WordPress バージョン (オプション)。現時点では、ここに記載した値による動作チェックは行なっていません。
  - License: ライセンス (オプション)。WordPress および Ktai Style と同様の GPL v2 を推奨します。少なくとも、テンプレートファイル (PHP ファイル) は GPL v2 と互換のライセンスにしてください。それ以外の、画像やスタイルシート (css ファイル) だけを再配布不可のライセンスとするのは可能です (この場合、1つのテーマ内に複数のライセンスが混在します)。
header.php
  ページヘッダの表示用。`add_action('wp_head');` を利用しているプラグインの場合、このテンプレートにある `ks_wp_head()` の引数を `KTAI_DO_PC_HEAD` に変更すると動作するようになります。
  多くのテーマで、`$ks_settings` 引数にてカラースキームおよびページ表示オプションを定義しています。カラースキームは、テンプレートファイルで `$ks_settings` 引数の使用箇所を探してみれば使い方が分かると思います。ページ表示オプション (`$ks_settings['list_pages']`) は、menu_pages.php テンプレート (後述) およびフッターでページ一覧を表示するときに使う `wp_list_pages(), ks_pages_menu()` に与えるオプションです。ソート順 (`sort_column`)、除外するページ ID (`exclude`) などを指定すると便利でしょう。
footer.php
  ページフッタの表示用。`add_action('wp_footer');` を利用しているプラグインの場合、このテンプレートにある `ks_wp_footer()` の引数を `KTAI_DO_PC_HEAD` に変更すると動作するようになります。
index.php
  フロントページ・検索ページなどに用いられる、必須のテンプレートです (存在しない場合携帯テーマとして認識されません)。投稿タイトルを一覧する表示スタイルです。
home.php
  フロントページ (トップページ) 専用です。このテンプレートがあるとき、フロントページには index.php の代わりに使います。Default テーマのみ存在し、「1番目の記事は本文を表示、2番目以降はタイトルのみ羅列」というデザインを実現しています。
archive.php
  アーカイブページ (年日付別／カテゴリー別／投稿者別など) 表示用です。記事タイトルだけ表示します。このテンプレートがないときは index.php で代用します。
page.php
  固定ページ表示用。このテンプレートがないときは index.php で代用します。
single.php
  投稿の単独表示用。このテンプレートがないときは index.php で代用しますが、デフォルトの index.php ではコメント一覧やコメント投稿フォームが出ないため、実質的に必須のテンプレートです。
comments.php
  コメント一覧／コメント投稿フォーム表示用。コメント閲覧・投稿を行うためには必須のテンプレートです。single.php から `comments_template()` タグで呼び出されます。
functions.php
  テーマ用の独自関数定義ファイル。テーマによっては、テーマ独自の言語リソースや全角カタカナ→半角カナ変換を行うフィルターを設定したりしています。

以上は WordPress の仕様に従って呼び出されます。もし、category-10.php というテンプレートを追加すれば、カテゴリー ID = 10 のアーカイブにはこのテンプレートが利用されます。

#### ページテンプレートの使い方

固定ページに独自のページテンプレートを割り当てている場合、携帯表示でも同じファイル名のページテンプレートが自動的に呼び出されます。例えば、PC 向けの Default テーマでは links.php というファイル名でブログロールを表示するテンプレート (リンクテンプレート) がありますが、これを使用している場合、携帯テーマに links.php というファイル名のテンプレートを作っておけば、それが呼び出されます。ちなみに、携帯用リンクテンプレートを作るには、(後述の) menu_links.php の複製を作って links.php というファイル名にすれば OK です。

#### 本プラグイン独自テンプレート

以後は本プラグイン独自のテンプレートです。 ウェブログ直下の URL に「?menu=XXXX」というクエリー文字列を付けると呼び出されます。使用しているテーマに該当の menu_XXXX.php ファイルが存在しない場合、Default テーマの同一名のファイルが呼び出されます。
例: http://blog.example.jp/?menu=months

menu_months.php
  年月アーカイブの一覧表示用。?menu=months で呼び出し。?menu=months&y=NNNN とすると NNNN 年のみのアーカイブになります。
menu_years.php
  年別アーカイブの一覧表示用。?menu=years で呼び出し。ここで年を選択すると、その年だけの月別アーカイブ (?menu=months&y=NNNN) に遷移します。
  デフォルトではこのテンプレートは使われていません。footer.php の、`ks_blogurl(false) . '?menu=months'`の部分を `ks_blogurl(false) . '?menu=years'` に変更すれば、アーカイブが年別の表示になります。
menu_cats.php
  カテゴリー一覧表示用。?menu=cats で呼び出し。
menu_tags.php
  タグ一覧表示用。?menu=tags で呼び出し。
menu_pages.php
  ページ一覧表示用?menu=pages で呼び出し。テーマによっては、このテンプレートを呼び出すリンクはありません。
menu_links.php
  ブックマーク (ブログロール) 一覧表示用。?menu=links で呼び出し。附属テンプレートではこのテンプレートを呼び出すリンクはありません。footer.php などに、
  `<a href="<?php ks_blogurl(); ?>?menu=links">リンク</a>`
  のように記載すれば使用できます。
menu_comments.php
  最近のコメント表示用。?menu=comments で呼び出し。デフォルトでは、コメントとトラックバック・ピンバックを混在して表示しますが、設定で分離表示が可能です。
redir.php
  外部サイト接続確認および、外部サイトへのリンクエラー画面のテンプレートです。ktai_style/redir.php ファイルでリンク先に携帯サイトがあるかを確認 (Mobile Link Discovery の検出) したのち、自動的に呼び出されます (URL に pconly=true パラメータがある場合は携帯サイトの確認を行いません)。ktai_redir 独自フィルターフックでも表示内容を書き換え可能ですが、本テンプレートでは、より柔軟なカスタマイズが可能です。redir テンプレートが使われるのは、以下の5通りの場合があります。独自テンプレートタグ `ks_redir_has(), ks_redir_get(), ks_redir_same_host()` を利用して、どの状況かを判断して適切な内容を表示させてください。
  - 指定したページに携帯版が見つからなかった場合:
    `ks_redir_get('full_url')` に PC サイトの URL あり。`ks_redir_get('mobile_url')` が NULL、`ks_redir_same_host()` が false
  - 指定したページに携帯版が見つかったものの、PC サイトとホスト名が異なる場合:
    `ks_redir_get('full_url')` に PC サイトの URL あり。`ks_redir_get('mobile_url')` に携帯サイトの URL あり。`ks_redir_same_host()` が false
  - 指定したページに携帯版が見つかって、かつ PC サイトとパスが異なる場合:
    デフォルトでは、この場合は redir テンプレートが呼ばれず、自動的に携帯サイトにリダイレクトされます。ただし、テーマの functions.php や my-hacks.php などで定数 KTAI_ALWAYS_RELAY_PAGE が true にセットされていれば、リダイレクトをせずに redir.php テンプレートを使用することができます。
    `ks_redir_get('full_url')` に PC サイトの URL あり。`ks_redir('mobile_url')` に携帯サイトの URL あり。`ks_redir_same_host()` が true
  - 指定したページに携帯版が見つかって、かつ PC サイトと URL が同じ場合:
    デフォルトでは、この場合は redir テンプレートが呼ばれず、自動的に携帯サイトにリダイレクトされます。ただし、テーマの functions.php や my-hacks.php などで定数 KTAI_ALWAYS_RELAY_PAGE が true にセットされていれば、リダイレクトをせずに redir.php テンプレートを使用することができます。
    `ks_redir_get('full_url')` に PC サイトの URL あり。`ks_redir_get('mobile_url')` に携帯サイトの URL あり (`ks_redir_get('full_url')` と同じ値)。`ks_redir_same_host()` が true
  - redir.php に必要なノンス文字列が正しくなかった場合:
    redir.php の悪用を防ぐため、12時間ごとに変化するノンス文字列を必要としていますが、時間切れ等でこれが検出できなかった場合はエラーを表示させます。
    `ks_redir_get('full_url'), ks_redir_get('mobile_url'), ks_redir_same_host()` すべて NULL または false
  redir.php に対して、そもそもノンス文字列が与えられなかった場合は、悪用と判断して、redi.php 自体が 400 Bad Request エラーを返します。redir テンプレートは呼び出されません (KTAI_ALWAYS_RELAY_PAGE で動作を変更することはできません)。

上記の他、テーマディレクトリーの配下に、独自の menu_XXX.php ファイル (XXX は英小文字、数字とアンダースコア(_) のみ) を作れば、?menu=XXX というクエリーが有効になります。例えば、menu_popular.php というファイルを作って、人気記事をリストするようなテンプレートとしておけば、http://blog.example.jp/?menu=popular などの URL で人気記事を出すページが作れます。PC 向けテーマではサイドバーに入れているものを、携帯版では独立したページに切り出して提供するなどの構成が可能です。

#### 絵文字の使い方

テンプレートや投稿本文で以下の XHTML タグを使えば絵文字を挿入できます。EZweb の絵文字と同じ仕様です。
`<img localsrc="999" alt="代替文字" />`
localsrc 属性に絵文字番号 (上記の場合 999)、alt 属性は絵文字の代替文字です (PC やスマートフォンなど絵文字非搭載の端末向け)。絵文字番号は以下のものが使えますが、EZweb 絵文字番号を使うことを推奨します。単なるアイコンなど代替文字が必要ない場合は、alt 属性を省略せずに、中身なしの alt 属性 (`alt=""`) を入れてください (省略した場合は既定の代替文字が入ってしまいます)。

サービス | 値 | 説明
--- | --- | ---
EZweb | 1〜822 | 10進数で EZweb 絵文字番号にそのまま対応
SoftBank | se001〜se53e | s を除いた部分は16進数4ケタで、ソフトバンク絵文字の UNICODE 値に対応。
i-mode | d001〜d276 | d を除いた部分は10進数。1〜176 は基本絵文字、201〜276 は拡張絵文字 1〜76 に対応。
WILLCOM | d001〜d276 | i-mode と同じ
wf040〜wf15f | w を除いた部分は16進数4ケタで、ウィルコム絵文字の Shift_JIS コードに対応
EMnet | 001〜d276 | i-mode と同じ
e253〜e278 | e を除いた部分は10進数で、イー・モバイル絵文字 253〜278 に対応。

ドコモ端末、ソフトバンク端末に対しては、似たような絵文字に自動的に変換されます。ウィルコム端末については、ウィルコム独自絵文字で似た絵文字があればそれを使い、なければ i モード互換絵文字に変換します。変換テーブルは独自のもので、キャリア公式のものとは微妙に異なっています。具体的な変換内容についてはソースコード (emobile.php, ezweb.php, i-mode.php, softbank.php, willcom.php) を参照してください。

PC やスマートフォンで閲覧した場合、絵文字は alt 文字列の内容に置換されます。alt 属性が存在しない場合、既定の代替文字を使います (services.php で定義)。

#### 投稿やページの画像をそのまま表示させる

投稿やページでの画像 (img 要素) は、より小さいサムネールにするか (3G, ウィルコム, スマートフォン等)、リンクに変換します (PDC 端末) が、携帯電話でも画像をそのまま表示させたい場合は、その img 要素に
`class="ktai"`
という属性を追加してください。すでに class 属性があるなら、既存の class の後ろに空白を入れて ktai と書けばよいです。
例: `<img src="/qr.png" class="noframe ktai" />`

なお、画像のサイズが大きくてページの全体サイズが携帯端末の表示容量を越える場合は、画像を alt テキストの内容に置換して容量制限に収まるようにしています。複数の画像がある場合は、後ろの画像から順にテキスト化されます (前の画像を極力残します)。

ただし、画像サイズのチェックはウェブログ内の画像 (uploads フォルダー配下、プラグイン用画像、テーマ用画像など) に限られ、外部サイトの画像は対象外です。外部サイトの画像に `class="ktai"` を付けて表示させた場合、携帯端末の容量制限を越えてしまう可能性があります。

#### PNG, GIF 自動切り替え機能

JPEG 画像は、ほぼすべての端末で表示できますが、PNG 画像は i-mode (ドコモ) で表示できず、GIF 画像は Softbank の PDC 端末で表示できません。Ktai Style では、端末に応じてどちらか適切なフォーマットの画像を表示させることができます。

PNG や GIF 画像を使いたい場合は、同じファイル名で PNG フォーマット、GIF フォーマットの画像をそれぞれ用意してください。そして、img 要素の src 属性では、PNG 画像か GIF 画像どちらかを呼び出してください。PNG 画像の呼び出しは i-mode において GIF 画像に、GIF 画像の呼び出しはソフトンバク PDC において PNG 画像に変更されます。

例: `<img src="<?php ks_theme_url(); ?>title.png" class="ktai" />`
→ i-mode では title.gif を読み込む
例: `<img src="<?php ks_theme_url(); ?>map.gif" class="ktai" />`
→ ソフトバンクでは map.png を読み込む

※Ktai Style 1.10 から、PNG, GIF どちらかの画像から片方の画像を作るようにしました。それでも、あらかじめ title.png, title.gif や map.gif, map.png それぞれを作っておくことをおすすめします (特に携帯テーマ用の画像の場合)。

#### コメント項目不足時エラーのインライン表示

default, compact, redportal テーマでは、WordPress の標準動作と異なり、コメント投稿時に必須事項 (コメント本文、名前、携帯電情報など) が記入されてないとき、コメントフォームを再び表示してその上部にエラーを出します (エラーのインライン表示)。classic テーマは、WordPress 標準の動作である、エラー画面に遷移となります。この場合、携帯電話の機種によっては、前の画面に戻ったとき、入力内容が消えてしまうことがあります。

エラーをインライン表示にするには、submit ボタンを `ks_inline_error_submit()` テンプレートタグを使って出力します。

default テーマの場合
  `<?php ks_inline_error_submit(__('Say It!')); ?>`
classic テーマの場合
  `<input type="submit" name="submit" value="<?php _e('Say It!'); ?>" />`

#### スタイルシートの利用

ドコモ FOMA, EZweb の WAP2.0 対応機、ソフトバンク 3G など、最近の端末ではスタイルシートにも対応しています。EZweb は、`media="handheld"` 指定によって独立したスタイルシートを作成できます。i-mode 用 CSS (i-CSS) は各要素に style 属性を付与したインライン形式しか対応しておらず、HTTP ヘッダで application/xhtml+xml を名乗る必要があります (text/html ではスタイルシートが無効になります)。

Ktai Style は、デフォルトではスタイルシートを使わず、HTTP ヘッダでは text/html を出力しています。しかし、`ks_use_appl_xhtml()` テンプレートタグを使うことにより、ドコモ FOMA, EZweb の WAP2.0 対応機、ソフトバンク 3G において、HTTP ヘッダで application/xhtml+xml を出力し、body, h1 hr, font 要素などの特定の属性を style 属性に変換します。

- body bgcolor 等を <style>body {background: なんちゃら}</style> に変換
- a name を a id に変換
- h1 (,h2, ... ,h6) align="center" 等を h1 style="text-align:center" 等に変換
- hr color="blue" 等 を hr style="color:blue;border-color:blue;" 等に変換。
- hr width="90%" 等を hr style="width:90%" 等に変換。
- hr align="left" 等を hr style="float:left" 等に変換。
- font size, font color 等を span style="font-size... や span style="font-color... に変換。
- input 要素の istyle 属性を style="-wap-input-format:*M" (EZweb, SoftBank, EMNet) もしくは style="-wap-input-format:"*<ja:h>"" (i-mode) 等に変換

Ktai Style のテンプレートタグは、従来式の HTML 記述 (font color="blue" など) となっていますが、この変換機構によりスタイルシート記述に対応するようになります。すなわち、スタイルシートに対応しない端末と、対応する端末を自動判別して最適な出力とできます。

### フィルタ対象タグ一覧

WordPress が提供するテンプレートタグのうち、以下のものは本プラグインが出力をフィルタして表示を簡略化しています。

`the_title()`
  パスワード保護された投稿の場合、「保護された投稿: 」または「保護中:」の文字列を「マル秘」絵文字に差し替えます。また、携帯管理画面では、「非公開:」の文字列を「鍵」の絵文字に差し替えます。
`the_content()`
  投稿本文を携帯電話向けに変換して出力します。ただし、携帯電話用テンプレートでは、後述の `ks_content()` を使ってください (`the_content()` はパスワード保護された投稿に非対応のため)。
`the_excerpt(), get_the_excerpt`
  投稿の抜粋を画面に出力もしくは取得します。抜粋を設定していない場合、投稿本文から、del, style 要素の中身および JavaScript を削除し、マルチバイト文字を考慮して300バイトの抜粋を作成します。
`comments_template()`
  PC 向けサイトのコメントテンプレートの代わりに携帯用テンプレートを読み込みます。
`comment_text()`
  コメント内容を携帯電話向けに簡略化して出力します。
`get_permalink()`
`get_page_link()`
`get_attachment_link()`
`get_year_link()`
`get_month_link()`
`get_day_link()`
`get_category_link()`
`get_tag_link()`
`wp_list_cats()`
`wp_list_categories()`
`wp_list_pages()`
  すべて title 属性, rel 属性を除去し、href 属性のリンク先からホスト名を削除します。

#### 独自アクションフック一覧

Ktai Style 独自のアクションフックを用意しています。以下のようなコードを、携帯テーマの functions.php, 独立したプラグインファイル(後述)、もしくは my-hacks.php に記述すれば利用可能です。

`add_action('ktai_init_pc', 'フック関数名');`

WordPress 2.8 以降の場合、my-hacks.php を有効にするのは難しいため、以下のような内容をテキストファイル (ファイル名は ks_hooks.php など *.php とする) に書き出すことで独立したプラグインを作成します。それを wp-content/plugins ディレクトリーにアップロードし、プラグイン管理画面で有効にすれば OK です。複数のカスタマイズを1つのファイルにまとめても構いません。

    <php
    /*
    Plugin Name: Ktai Style Hooks
    Version: 1.80
    */
    add_action('ktai_init_pc', 'フック関数名');
    /* その他カスタマイズ内容 */
    ?>

ktai_init_mobile
  携帯電話でアクセスしたときの初期化処理に、独自処理を追加するためのアクションです。
ktai_init_pc
  PCでアクセスしたときの初期化処理に、独自処理を追加するためのアクションです。
ktai_wp_head
  携帯テーマの header.php で `ks_wp_head()` の内部で実行されるアクションです。wp_head アクションの携帯版です。
ktai_wp_footer
  携帯テーマの header.php で `ks_wp_footer()` の内部で実行されるアクションです。wp_footer アクションの携帯版です。

#### 独自フィルターフック一覧

Ktai Style 独自のフィルターフックを用意しています。以下のようなコードを、携帯テーマの functions.php, 独立したプラグインファイル、もしくは my-hacks.php に記述すれば利用可能です。

`add_filter('ktai_raw_content', 'フック関数名');`

複数の引数がある場合は、優先順位 (デフォルトは10) および引数の数を指定する必要があります。

`add_filter('ktai_convert_link', 'フック関数名', 10, 4);`

ktai_detect_agent
  引数: `$ktai, $ua`
  携帯端末の判別結果をフィルターします。`$ktai` は端末ごとのオブジェクトです (PC と判別された場合は NULL)。`$ua` はユーザーエージェント文字列です。判別結果を変更する場合は、既存の `$ktai` オプジェクトを破棄してから、新たなオブジェクトを生成して返り値とします。例えば、iPhone, iPod touch を「その他端末」として判別させる場合は以下の通りとします。

      <?php
      function ks_detect_iphone($ktai, $ua) {
      	if (preg_match('/\(iP(hone|od);/', $ua)) {
      		if ($ktai) {
      			unset($ktai);
      		}
      		$ktai = new KtaiService_Other($ua);
      	}
      	return $ktai;
      }
      add_filter('ktai_detect_agent', 'ks_detect_iphone', 10, 2);
      ?>

  ※重要このフィルターを使うフック関数および呼び出し用の `add_filter()` は、my-hacks.php に記述するか、独立したプラグインファイルとして記述する必要があります。他のフィルターと異なり、携帯テーマの functions.php に入れても読まれません (携帯テーマの functions.php を読む前に携帯端末の判別を行うため)。
  ※ WP-Cache, WP Super Cache を併用する場合は、patch-wpcache.php, patch-supercache-ktaistyle.php のユーザーエージェント判別部分も修正する必要があります。
ktai_mobile_search_ip
  引数: `$search_ip`
  モバイル向け検索エンジンの IP アドレス一覧の配列をフィルターします。アドレス一覧に追加したりできます。
ktai_smiley_table
  引数: `$smiles`
  WordPress のスマイリーを携帯電話絵文字に変換するテーブルをフィルターします。このフィルターを使えば、スマイリーアイコンを追加した場合、それに対応する携帯絵文字を追加することが可能になります。`$smiles` は配列で、キーはスマイリーのファイル名 (icon_XXXX.gif) で、値は現在閲覧しているキャリアに対応した絵文字の文字コード (ソフトバンクの場合ウェブコード) です。たいていの場合、フィルター関数では、`is_ktai()` を使ってキャリア別に処理する必要があるでしょう。例えば以下のようにします。

      <?php
      function ks_correct_smiley($smiles) {
      	switch (is_ktai()) {
      	case 'DoCoMo' :
      		$smiles['icon_question.gif'] = KtaiService_DoCoMo::$pics['d159']; // use "!?"
      		break;
      	}
      	return $smiles;
      }
      add_filter('ktai_smiley_table', 'ks_correct_smiley');
      ?>

ktai_pictogram_table
  引数: `$trans`
  絵文字用を示す `<img localsrc="XXXX" />` フォーマットから実際の絵文字に変換するときのテーブルをフィルターします。`$trans` は配列で、キーは絵文字番号 (XXXX 部分)、値は現在閲覧しているキャリアに対応した絵文字の文字コード (ソフトバンクの場合ウェブコード) です。
ktai_convert_pict_other
  引数: `$converted, $number, $alt, $charset`
  PC および「その他」端末での閲覧時、携帯電話絵文字を文字列に変換した結果をフィルターします。`$converted` は Ktai Style 既定の代替文字列に置き換えた結果、`$number` は絵文字番号、`$alt` は `<img localsrc...` に書かれた alt 文字列です。空の alt 文字列ならば空文字列が、alt が存在しなければ NULL が入ります。`$charset` は `$converted, $alt` の文字コードです (スマートフォン等「その他」端末では SJIS-win, PC の場合はウェブログの文字列 (たいてい UTF-8) です。PC でもフィルターを使うためには、my-hacks.php もしくは独立したプラグインファイルにフィルタ関数および add_filter を書く必要があります。
ktai_raw_content
  引数: `$buffer`
  テンプレートによって作成された直後のページ内容をフィルターできます。文字コードはウェブログの文字コードのままです (たいていは UTF-8)。UTF-8 そのままで記述されているハートマーク等を数値実体参照に置換する処理は、このフックに処理用関数を割り当てて行なっています。
ktai_encoding_converted
  引数: `$buffer`
  文字コードを携帯電話用に変換後、ページ分割前の内容をフィルターできます。絵文字 (実体参照で記述されたハートマーク等も含む) や顔文字の変換、余分な XHTML タグや改行コードの削除はこのフックにそれぞれの処理関数を割り当てることで実施しています。優先順位 10 でフィルター追加した場合、これらの処理が終わった後の内容をフィルターすることになります。
ktai_split_page
  引数: `$buffer, $page_num`
  ページ分割を行うためのフィルターです。ページ分割処理は、このフックにページ分割関数を割り当てることで行なっています。`$buffer` は出力用 XHTML、`$page_num` は現在のページ番号 (最初のページは1) です。携帯電話各社に応じた HTML/XHTML タグ最適化は、このフックに10以上の優先順位を持つフィルターを追加することで行なってください。ページ分割前に li, dt, dd, option などの閉じタグ削除を行なっても、ページ分割処理で補完されてしまうためです。
ktai_allowedtags
  引数: `$allowedtags`
  ページ分割時に、使用を許可する XHTML タグの一覧をフィルターできます。デフォルトのタグ一覧は kses.php で定義していますので、追加したいタグを適宜修正してください。例えば、フィルター関数で
  `$allowedtags['style'] = array();`
  とすれば style 要素が使えるようになります。
ktai_split_page_navi
  引数: `$navi, $prev, $num, $next`
  携帯用ページ分割のナビゲーションメニューをフィルターします。すべての引数はウェブログの文字コードと同じ (たいてい UTF-8) で、`$navi` は、メニュー用 HTML、`$prev` は1つ目の変数で「*. 前へ」のリンク HTML、`$num` は2つ目の変数で現在のページ数、`$next` は3つ目の変数で「次へ.#」のリンク HTML です。
ktai_login_logo
  引数: `$html, $url, $ext`
  ログイン画面に出る WordPress ロゴの出力をフィルターします。`$html` は出力用HTML, `$url` はロゴの URL、`$ext` は、閲覧している端末に応じた画像拡張子 (png または gif) です。WordPress ロゴをサイトのロゴに差し替えたいときに使えます。
ktai_die_logo
  引数: `$html, $url, $ext`
  外部サイトへの中継ページ、コメント投稿時のエラー画面、管理画面での確認画面等で、画面上部に出る WordPress ロゴの出力をフィルターします。`$html` は出力用HTML, `$url` はロゴの URL、`$ext` は、閲覧している端末に応じた画像拡張子 (png または gif) です。WordPress ロゴをサイトのロゴに差し替えたいときに使えます。
ktai_redir
  引数: `$html, $full_url, $mobile_url`
  i-mode, EZweb, Yahoo! ケータイ閲覧時に外部サイトに移動する際に出る中継ページの文言をフィルターします (使用例)。
  `$html` はXHTML で記述された内容、`$full_url` はジャンプ先 URL、`$mobile_url` は発見された携帯サイトの URL です (ジャンプ先 URL とホスト名が異なるときのみ設定。ホスト名が同一のときは中継ページが出ずに自動的にリダイレクトします。常に中継ページを出したいときは、定数 KTAI_ALWAYS_RELAY_PAGE を true として設定してください)。
  $full_url は常に設定されますが、$mobile_url は、NULL／$full_url とホスト部が違う URL／$full_url とホストは同じだがパスが違う URL ／$full_url と同一 URL、の4通りがあります。これらにより、$html の中身が異なることに注意してください。
ktai_redir_error
  引数: `$html`
  外部サイトの中継スクリプトがエラーとなったときの文言をフィルターします。中継スクリプトを使うときには12時間ごとに変化するノンス文字列が必要なため、時間が経ち過ぎたときや、でたらめなノンス文字列の場合はノンスの確認に失敗し、エラーとなります。
ktai_leave_scheme
  引数: `$schemes`
  中継ページ経由のリンクとせず、通常リンクのままとする URI スキーム一覧 (配列) をフィルターできます。フィルター関数で
  `unset($schemes['tel-av:']);`
  とすると tel-av スキームのリンクは中継ページ経由になります。
ktai_external_link
  引数: `$link_html, $href, $label, $icon`
  外部サイトへのリンク変換処理をフィルターします。`$link_html` は Ktai Style による処理後のリンクHTML, `$href` はリンク先 URL, `$label` はリンク文字列 (XHTML)、`$icon` は外部サイトを示す絵文字アイコン (img 要素)です。携帯電話キャリアや種別を知りたい場合は、`is_ktai(), ks_service_type()` を使ってください。
ktai_mobile_same_url
  引数: `$url_pat`
  同じ URL で PC ／携帯両対応できるサイトの URL 正規表現リストをフィルターします。デフォルトの URL リストは、URL が共用になっているサイト、PC 向け URL に携帯電話でアクセスしたら別 URL にリダイレクトされるサイトのどちらも含まれます。デフォルトのサイト一覧に追加する場合は以下のようにします。追加する URL は正規表現であることに注意してください。

      <?php
      function ks_add_mobile_sites($url_pat) {
      	$url_pat[] = 'http://blog\.example\.jp/';
      	return $url_pat;
      }
      add_filter('ktai_mobile_same_url', 'ks_add_mobile_sites');
      ?>

ktai_none_mobile_url
  引数: `$url_pat`
  上記 mobile_same_url のパターンにマッチするものの、中継ページを出させたい URL の正規表現リストをフィルターします。このパターンにマッチした場合、携帯版の存在確認をしないで、必ず中継ページを出します。
  このフィルターは、"http://www.cocolog-nifty.com/" を除外するために用意したものです。mobile_same_url には `http://[-\w]+.(cocolog|air|moe|tea|txt|way)-nifty\.com/` というパターンがあって、ココログのフロントページである http://www.cocolog-nifty.com/ もマッチしてしまいます。しかし、この URL 配下のページは完全に携帯対応しておらず、中継ページなしでリダイレクトするのはふさわしくありません。といって、正規表現で www.cocolog-nifty.com だけ外す記述は難しいため、除外サイトを設定する、という手段を用意しました。mobile_same_url フィルターで追加した URL パターンで似た状況があれば、none_mobile_url フィルターも使ってみてください。
ktai_convert_links
  引数: `$link_html, $orig_html, $href, $label`
  a 要素によるハイパーリンクの変換処理をフィルターします。`$link_html` は Ktai Style による処理後のリンク HTML、`$orig_html` は処理前の a 要素そのもの、`$href` はリンク先 URL、`$label` はリンク文字列です。フィルター結果を NULL にすると、a 要素の変換処理が行なわれなくなります。
ktai_image_to_link
  引数: `$image_html, $orig_html, $src`
  img 要素による画像を、より小さいサムネールやリンクに変換する処理をフィルターします。$image_html は Ktai Style による変換後の HTML、`$image` は変換前の img 要素そのもの、`$src` は画像のソース URL です。フィルター結果を NULL にすると、画像からリンクへの変換処理が行なわれなくなります (画像がそのまま表示される)。
ktai_image_inline_setting
  引数: `$image_inline`
  3G 端末、ウィルコム、スマートフォン等で、画像をインライン表示させるかどうかデフォルト状態をフィルターします。3G 端末、ウィルコム、スマートフォン等でアクセスし、かつ、管理画面で「3G 端末, ウィルコム, スマートフォン等での画像表示」が「画像を表示」に設定されていれば、`$image_inline` が true となっています。この値をそのまま返すと、画像をインライン表示します。常に false を返せば、端末によらず、「画像をリンクにする」がデフォルトになります。逆に、常に true を返すと、2G 端末でも画像をインライン表示してしまいます (おすすめしません)。フィルター関数の例は以下の通りです。

      <?php
      function ks_image_link_default($image_inline) {
      	return false;
      }
      add_filter('ktai_image_inline_setting', 'ks_image_link_default');
      ?>

ktai_thumbnail_max_size
  引数: `$size`
  携帯用サムネールの長辺側サイズをフィルターします。デフォルトは 96 です。これを変更しても、すでに作成ずみのサムネールは変わりませんので、「プラグインの撤去」の説明に従って、既存の携帯サムネールを削除してください。
ktai_direct_link_image_size
  引数: `$size`
  元画像へのリンクを、「元画像(xxxKB)」というテキストリンクにするか、携帯サムネールへリンクにするかを判断する画像サイズをフィルターします。デフォルトは 75KB (76800 バイト) です。
ktai_switch_inline_images
  引数: `$menu, $before, $after, $color`
  「画像を表示する／リンクに変換」の切り替えメニューをフィルターします。`$menu` は切り替えメニュー HTML、`$before, $after` は切り替えメニューの前後につく XHTML (`ks_switch_inline_images()` の引数)、`$color` はリンクの色指定です。
ktai_image_alignment
  引数: `$html, $align, $margin, $style`
  画像要素 (img タグ) の回り込みに関する HTML 出力をフィルターします。`$html` は img 要素の HTML タグ全体。`$align` は回り込みの指定 (alignleft, alignright, alignnone)、`$margin` はマージン値、`$style` は img 要素に追加したスタイル記述です (端末によって style 属性の場合と、align 属性の場合があります)。回り込みを解除するには、
  `$html = $style ? str_replace($style, '', $html) : $html;`
  とやれば可能です。
ktai_switch_pc_view
  引数: `$menu, $path, $before, $after, $color`
  「PC 表示にする」の切り替えメニューをフィルターします。`$menu` は切り替えメニュー HTML、`$path` は現在 URI のパス部分 (URI のスラッシュ以降)、`$before, $after` は切り替えメニューの前後につく XHTML (`switch_pc_view()` の引数)、`$color` はリンクの色指定です。
ktai_switch_mobile_view_css
  引数: `$style`
  PC 表示に変更後に出る「携帯表示にする」の切り替えメニュー部分に適用されるスタイルシートをフィルターします。`$style` は XHTML の head 要素に入るスタイルシートそのもの (<style type="text/css"> などの style タグは含みません)。デフォルトのスタイルでは、PC 表示が崩れてしまうときにフィルターを利用して見栄えを調整してください。
ktai_switch_mobile_view
  引数: `$menu, $path`
  PC 表示に変更後に出る「携帯表示にする」の切り替えメニューをフィルターします。`$menu` は切り替えメニュー HTML、`$path` は現在 URI のパス部分 (URI のスラッシュ以降) です。

上記フックでは既定のフィルターを定義していますが、以下の通りにして削除することも可能です。

    remove_filter('ktai_raw_content', array($Ktai_Style->ktai, 'shrink_pre_encode'), 9);
    remove_filter('ktai_encoding_converted', array($Ktai_Style->ktai, 'shrink_pre_split'), 5);
    remove_filter('ktai_encoding_converted', array($Ktai_Style->ktai, 'replace_smiley'), 7);
    remove_filter('ktai_encoding_converted', array($Ktai_Style->ktai, 'convert_pict'), 9);
    remove_filter('ktai_split_page', array($Ktai_Style->shrinkage, 'add_image_inline'), 7);
    remove_filter('ktai_split_page', array($Ktai_Style->shrinkage, 'split_page'), 9, 2);
    remove_filter('ktai_split_page', array($Ktai_Style->ktai, 'shrink_post_split'), 15);
    remove_filter('ktai_split_page', array($Ktai_Style->shrinkage, 'trim_images'), 20);

#### 独自タグ一覧

出力される XHTML が簡略化されたテンプレートタグを用意しています。これらの関数はテンプレートが読み込まれる直前に有効となるため、他のプラグインでは、そのプラグインが `add_action(), add_filter()` で追加したコールバック関数の中でのみ使えます。

`ks_option($name)`
  本プラグインのオプション設定値を返します。
  `$name`: オプション名
`ks_post_password_required($post)`
  投稿がパスワード保護されていて、かつ、パスワードが未入力・正しくないとき true になります。パスワード保護されていないか、正しいパスワードが入力されていれば false になります。WordPress の投稿ループの中では引数が省略できますが、そうでない場合は引数に `$post` (投稿 ID もしくは post オブジェクト) を与えてください。
`ks_service_type()`
  携帯キャリアごとのサービス名を返します。i-mode (ドコモ) の場合 mova, FOMA のいずれか、EZweb (KDDI) の場合 HDML, WAP2.0 のいずれか、ソフトバンクの場合 PDC, 3G のいずれか、ウィルコムの場合 AIR-EDGE、イー・モバイルの場合 EMnet という値になります。ディズニー・モバイルは ソフトバンク 3G とみなします。
`ks_is_flat_rate()`
  閲覧中の端末が定額パケット通信に対応しているなら true を返します。具体的には、各社 3G 端末、ウィルコム、スマートフォン、「その他」端末 (mova, ソフトバンク PDC 以外) の場合 true となります。
`ks_cookie_available()`
  閲覧中の端末がクッキーに対応しているなら true を返します。具体的には、EZweb (WAP, HTML)、ソフトバンク 3G、ウィルコム、イー・モバイル、スマートフォンなど「その他」端末の場合 true となります。false になるのは、ドコモ 3G/PDC、ソフトバンク PDC となります。
`ks_ext_css_available()`
  閲覧中の端末が外部 CSS ファイルに対応しているなら true を返します。具体的には、EZweb (WAP)、ソフトバンク 3G、イー・モバイル、スマートフォンなど「その他」端末の場合 true となります。false になるのは、ドコモ 3G/PDC、EZweb (HDML)、ソフトバンク PDC、ウィルコムとなります。
`ks_in_network($allow_search_engine)`
  i-mode, EZweb, Yahoo! ケータイ, ウィルコム, EMnet 各社のネットワークからアクセスしている場合 true になります。スマートフォン等でのアクセスや、携帯電話のユーザーエージェントを名乗ってインターネットからアクセスしている場合は false になります。できるだけ最新情報に追随するよう配慮していますが、電話キャリアが突然新しい IP アドレスを追加することがある (携帯電話からアクセスしているのに、false と判定される可能性がある) ため、ご注意ください。
  `$allow_search_engine`: true にすると、各種モバイル向け検索エンジンのクロールでも true を返します (デフォルトは false)。
`ks_is_menu($type)`
  `$type` が指定されていない場合、menu_XXXX.php を使用した出力の場合 true を返します。`is_home()` は、menu_XXXX.php を使った出力の場合でも true になってしまうため、必要に応じて `is_home() && ! ks_is_menu()` といったコードを使ってください。
  `$type`に値を入れた場合、その値に対応する menu_XXXX.php を使用しているかどうかの判定になります。例えば、`ks_is_menu('comments')` は menu_comments.php を使用した出力の場合 true となります。
`ks_is_front()`
  サイトの最初のページかどうかを判断します。`is_home()` かつ1ページ目であれば true となります。独自テンプレートである menu_XXXX.php (年月アーカイブ／カテゴリー一覧／タグクラウド／ページ一覧／ブログロール／最近のコメント) を表示しているときは false になります。
`ks_is_comments_list()`
  コメント一覧ページであれば true になります。
`ks_is_comment_post()`
  コメント投稿ページであれば true になります。
`ks_is_comments()`
  コメント一覧ページまたはコメント投稿ページであれば true になります。
`ks_is_image_inline()`
  各社 3G 端末、ウィルコム、スマートフォン等で、画像をインライン表示させる状態のとき true になります。関数名は `ks_is_inline_image()` ではないことに注意してください。
`ks_added_image()`
  テーマや他のプラグインで、投稿本文やページ本文に画像を追加したとき、この関数を呼ぶ必要があります。さもないと、「画像を表示／リンクに変換」のメニューが出ません。
`ks_has_inline_images()`
  ページ中のインライン画像の枚数を返します。この値が1以上かつ `ks_is_image_inline()` が true のとき「画像を表示する／リンクに変換」のメニューが出ます。
`ks_is_redir()`
  redir.php テンプレートを使用している場合に true、していない場合に false を返します。
`ks_header()`
  ヘッダーを出力します (`get_header()` は使えません)。
`ks_footer()`
  フッターを出力します (`get_footer()` は使えません)。
`ks_wp_head($pc_head)`
  独自アクション ktai_wp_head を実行します。`$pc_head` が KTAI_DO_PC_HEAD (== true) の場合、WordPress 標準テンプレートタグ `wp_head()` も実行しますが、スタイルシートや JavaScript の出力は抑制されます。デフォルトでは KTAI_NONE_PC_HEAD のため、wp_head() は実行されません。`wp_head()` の実行を前提とするプラグインを併用するとき、KTAI_DO_PC_HEAD に変更してください。
`ks_wp_footer($pc_footer)`
  独自アクション ktai_wp_footerを実行します。`$pc_footer` が KTAI_DO_PC_HEAD (== true) の場合、WordPress 標準テンプレートタグ `wp_footer()` を実行しますが、スタイルシートや JavaScript の出力は抑制されます。デフォルトでは KTAI_NONE_PC_HEAD のため、wp_footer() は実行されません。`wp_footer()` の実行を前提とするプラグインを併用するとき、KTAI_DO_PC_HEAD に変更してください。
`ks_blogurl($echo)`
  ウェブログの URL を出力します。ホスト名を省略した絶対パスに変換し、末尾にスラッシュが付きます。
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
`ks_siteurl($echo)`
  WordPress がインストールされている URL を出力します。ホスト名を省略した絶対パスに変換し、末尾にスラッシュが付きます。
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
`ks_plugin_url($echo)`
  プラグインのあるディレクトリにアクセスできる URL を出力します。末尾にスラッシュが付きます。
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
`ks_get_theme($echo)`
  現在の携帯電話用テーマの名前を取得します。
  `$echo:` true の場合、画面に出力します。false の場合、関数の返り値とします (デフォルト)。
`ks_get_theme_directory($echo)`
  現在の携帯電話用テーマがあるディレクトリーを取得します。末尾にスラッシュが付きます。
  `$echo:` true の場合、画面に出力します。false の場合、関数の返り値とします (デフォルト)。
`ks_theme_url($echo)`
  携帯電話用テーマのディレクトリーにアクセスできる URL を出力します。末尾にスラッシュが付きます。
  `$echo:` true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
`ks_admin_url($echo)`
  管理画面にログインしたときの最上位 URL を出力します。末尾にスラッシュが付きます。
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
`ks_login_link($before, $after, $echo, $accesskey, $label)`
  ktai_style/admin ディレクトリーがあれば、ログイン画面へのリンクを出力します。末尾にスラッシュが付きます
  `$before`: リンクの前に出力する文字列
  `$after`: リンクの後ろに出力する文字列
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
  `$accesskey`: アクセスキー文字列 (オプション)
  `$label`: 「ログイン」を示す文字列。デフォルトは「ログイン」('Log in' に対するローカライズ文字列) です。
  ※引数は、`'before=|&accesskey=0'` のようなクエリー文字列、`array('before' => '|', 'accesskey' => '0')` のような配列で与えることも可能です。
`ks_get_login_url($echo, $redirect)`
  ログイン用の URL を返します。
  `$echo`: true の場合、画面に出力します。false の場合、関数の返り値とします (デフォルト)。
  `$redirect`: ログイン後にリダイレクトする URL (オプション)
`ks_get_logout_url($echo, $redirect)`
  ログアウト用の URL を返します。
  `$echo`: true の場合、画面に出力します。false の場合、関数の返り値とします (デフォルト)。
  `$redirect`: ログアウト後にリダイレクトする URL (オプション)
`ks_is_loggedin()`
  携帯電話でログインしている場合、ユーザー ID を返します。ログインしていない場合 false を返します。
`ks_session_id_form()`
  コメントフォームなどで、ログイン中のセッション ID を引き継ぐための HTML を出力します。
`ks_check_wp_version($version, $operator)`
  WordPress のバージョンをチェックします。バージョンが `$version` が `$operator` に合致する場合 true となります。WordPress ME の場合、「ME」という文字列を除いた数字部分を使用します。
`ks_term_name($echo, $detect_search_engine)`
  携帯電話の機種名を取得・表示します。不明時は N/A という文字列になります。au の場合、デバイス ID ではなく、一般的な機種名に変換します。検索エンジンの場合は検索エンジンの名称 (Googlebot-Mobile 等) になります。
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
  `$detect_search_engine`: true の場合、検索エンジンの名前を取得します (デフォルト)。false の場合、検索エンジンが名乗る携帯端末の名前を取得します。
`ks_use_appl_xhtml()`
  ドコモ FOMA, EZweb (WAP2.0), ソフトバンク 3G およびディズニー・モバイルのとき、HTTP ヘッダーの MIME タイプを application/xhtml+xml に変更し、以下の html 要素を出力します。また、font 要素の color 属性を span 要素の style 属性に変換するなど、いくつかの XHTML 属性をスタイルシートに変換します (詳細は「↑スタイルシートの利用」を参照)。
  `<html xmlns="http://www.w3.org/1999/xhtml">`
  header.php の先頭で使い、かつ、<html> という記述は消しておく必要があります。でないと html 要素がダブって文法違反になります。
`ks_applied_appl_xhtml()`
  `ks_use_appl_xhtml()` を使っているとき、MIME タイプが application/xhtml+xml に変更されている (== ドコモ FOMA, EZweb (WAP2.0), ソフトバンク 3G, EMnet およびディズニー・モバイルで閲覧している) なら true を返します。
`ks_force_text_html()`
  MIME タイプを text/html に強制します。header.php の先頭で使う必要があります。
`ks_mimetype()`
  携帯電話サイトの MIME タイプを出力します。
`ks_charset()`
  携帯電話サイトの文字コードを出力します。
`ks_fix_encoding_form()`
  入力フォームにおいて、文字化け防止のための文字コード判別用隠しフィールドを追加します。
`ks_detect_encoding()`
  文字コード判別用隠しフィールドをもとに、文字コードを判別します。入力フォームの処理部分で使います。
`ks_mb_get_form($key, $charset)`
  フォームの値をウェブログ文字コード (たいてい UTF-8) に変換して返します。携帯電話絵文字がある場合、`<img localsrc="XXXX" />` の型式に変換されます。フォームには、`ks_fix_encoding_form()` で文字コード判別用隠しフィールドを埋め込んでおいてください。wp-settings.php で行なわれる magic_quote 処理は残されます。
`ks_convert_kana($buffer)`
  (いわゆる)全角の英数字を半角に変換します。
  `$buffer`: 変換する文字列。
`ks_is_required_term_id()`
  端末 ID を要求している状態ならば true になります。具体的には、管理画面で「コメント投稿者の端末 ID 送信を必須とする」を「はい」にしていて、かつ、閲覧者がドコモ／au／ソフトバンク／イー・モバイル音声端末の場合を示します。
`ks_require_term_id_form($action, $method)`
  端末 ID を要求するフォームを作ります。
  `$action:` フォームの送信先
  `$method:` post, get のいずれか
`ks_inline_error_submit($value)`
  必須項目不足などのエラーをインライン表示するコメントフォームを作るための送信ボタンを出力します。
  `$value:` 送信ボタンの表示内容 (デフォルトは `_e('Say It!')` です)
`ks_do_comment_form_action()`
  コメントフォームで `do_action('comment_form', $post->ID);>` を実行し、そのアクションで行なわれた画面出力を携帯電話向けに軽量化します。
`ks_title($echo)`
  ページのタイトルを出力します。`wp_title()` を短くしたものになります。
  `$echo`: true のとき画面に出力します (デフォルト)。false の場合、関数の返り値とします。
`ks_page_title($logo_file, $echo, $before, $after, $before_logo, $after_logo)`
  ページのタイトルを <h1> 要素付きで出力します。シングルポストのときは出力しません。
  `$logo_file`:ロゴ画像のファイル名を与えます。。ロゴ画像はテーマディレクトリー直下においてください。GIF 画像の場合は同じ名前の PNG 画像ファイルを、PNG 画像の場合は同じ名前の GIF 画像ファイルを作成しておいてください。
  `$echo`: true のとき画面に出力します (デフォルト)。false の場合、関数の返り値とします。
  `$before`: タイトルを文字出力するとき、前に付ける HTML を指定します。
  `$after`: タイトルを出力するとき、前に付ける HTML を指定します。文字、ロゴ画像共通です。
  `$before_logo`: タイトルとしてロゴ画像を出力するとき、前に付ける HTML を指定します。省略すると `<h1 align="center">` となります。
  `$after_logo`: タイトルとしてロゴ画像を出力するとき、後に付ける HTML を指定します。省略すると `$after` と同じになります。
  ※引数は、`'logo_file=logo.png&echo=false'` のようなクエリー文字列、`array('logo_file' => 'logo.png', 'echo' => false)` のような配列で与えることも可能です。
`ks_content($more_link_text, $stripteaser, $more_file, $strip_length, $echo)`
  投稿本文を携帯電話向けに変換して出力します。del, style 要素の中身および JavaScript を削除／画像はより小さいサムネールもしくはリンクに変換／外部サイトへのリンクを中継ページ経由に変換／拙作の Ktai Location が挿入した位置情報 URL を削除など。
  `$more_link_text`: 「続きを読む...」の文字列を指定します。
  `$stripteaser`: 「続きを読む...」より手前を削除するとき true を指定します。
  `$more_file`: (現在未使用のオプションです)
  `$strip_length`: 本文をカットするバイト数を指定します。マルチバイト文字列および HTML タグの途中で切れないよう切り詰められます。
  `$echo`: true のとき画面に出力します (デフォルト)。false の場合、関数の返り値とします。
  ※引数は、`'strip_length=100&echo=0'` のようなクエリー文字列、または `array('more_link_text' => __('(more...)'), 'echo' => false)` のような配列で与えることも可能です。
`ks_get_content($more_link_text, $stripteaser, $more_file, $strip_length)`
  携帯電話向けに変換する前の投稿本文を返します。the_content フィルターがかかっていないため、ショートコードや他のプラグインによる本文変換が処理されていません (WordPress 標準の `get_the_content()` と同様)。the_content フィルターをかけた結果が必要な場合は `ks_content('echo=0')` を利用してください。
  `$more_link_text`: 「続きを読む...」の文字列を指定します。
  `$stripteaser`: 「続きを読む...」より手前を削除するとき true を指定します。
  `$more_file`: (現在未使用のオプションです)
  `$strip_length`: 本文をカットするバイト数を指定します。マルチバイト文字列および HTML タグの途中で切れないよう切り詰められます。
`ks_excerpt($strip_length, $echo)`
  投稿の抜粋を決められたバイト数で出力もしくは取得します。バイト数指定ができる以外は WordPress 標準の `the_excerpt(), get_the_excerpt()` と同じです。
  `$strip_length`: 抜粋をカットするバイト数を指定します。マルチバイト文字列および HTML タグの途中で切れないよう切り詰められます。
  `$echo`: true のとき画面に出力します (デフォルト)。false の場合、関数の返り値とします。
`ks_check_password($message)`
  パスワード保護された投稿かどうか確認します。保護されていないか、正しいパスワードが入力されれば、NULL を返します。保護されていて、かつ、パスワードが正しくなければパスワード入力フォームを返します。
  `$message`: 入力フォームの上に出すメッセージ
`ks_cut_html($content, $length, $start, $charset)`
  HTML 文字列を指定した文字数に収まるように短かくします。HTML タグの途中およびマルチバイト文字列の途中で切らないよう前後は調整されます。内部的には `mb_strcut()` を用いています。
  `$content`: HTML 文字列
  `$length`: 切り取るバイト数
  `$start`: 開始位置 (デフォルトは 0)
  `$charset`: 文字エンコーディング (デフォルトはウェブログの文字エンコーディング)
`ks_time($year, $month_date, $today)`
  現在日時に応じて適切に短縮した投稿日時を出力します。投稿日と現在が同じ年ならば年を省略、同じ年月日ならば年月日を省略します。日だけの表示はおかしいので、年月だけが同じのときは、年だけの省略となります。フォーマットに使う文字列は PHP の `date()` 関数と同じです。引数を省略すると、プラグイン設定画面に入力したフォーマットとなります。
  `$year`: 去年以前の日時 (少なくとも年月日を表示)
  `$month_date`: 今年の日時 (少なくとも月日を表示)
  `$today`: 今日の日時 (少なくとも日または時を表示)
`ks_get_time($year, $month_date, $today)`
  現在日時に応じて適切に短縮した投稿日時を返します。引数は `ks_time()` と同じです。
`ks_mod_time($year, $month_date, $today)`
  現在日時に応じて適切に短縮した修正日時を出力します。投稿日と現在が同じ年ならば年を省略、同じ年月日ならば年月日を省略します。日だけの表示はおかしいので、年月だけが同じのときは、年だけの省略となります。フォーマットに使う文字列は PHP の `date()` 関数と同じです。引数を省略すると、プラグイン設定画面に入力したフォーマットとなります。
  `$year`: 去年以前の日時 (少なくとも年月日を表示)
  `$month_date`: 今年の日時 (少なくとも月日を表示)
  `$today`: 今日の日時 (少なくとも日または時を表示)
`ks_get_mod_time($year, $month_date, $today)`
  現在日時に応じて適切に短縮した修正日時を返します。引数は `ks_mod_time()` と同じです。
`ks_comment_datetime($year, $month_date, $today)`
  現在日時に応じて適切に短縮したコメント日時を出力します。コメント日と現在が同じ年ならば年を省略、同じ年月日ならば年月日を省略します。日だけの表示はおかしいので、年月だけが同じのときは、年だけの省略となります。フォーマットに使う文字列は PHP の `date()` 関数と同じです。引数を省略すると、プラグイン設定画面に入力したフォーマットとなります。
  `$year`: 去年以前の日時 (少なくとも年月日を表示)
  `$month_date`: 今年の日時 (少なくとも月日を表示)
  `$today`: 今日の日時 (少なくとも日または時を表示)
`ks_get_comment_datetime($year, $month_date, $today)`
  現在日時に応じて適切に短縮したコメント日時を返します。引数は `ks_comment_datetime()` と同じです。
`ks_comment_author_link($echo)`
  コメント投稿者へのリンクを出力します。`comment_author_link()` とほぼ同じ動作ですが、i-mode、EZweb、Yahoo! ケータイのときはリンクが中継ページ経由のものになります。
  `$echo`: true のとき画面に出力します (デフォルト)。false の場合、関数の返り値とします。
`ks_pict_number($num, $echo)`
  数字の絵文字を返します。
  `$num`: 出力したい数字 (0〜9)。10 を与えると 0 を出力します。-1 以下の数値または11以上の数値を与えると□ (四角) を出力します。数字以外の値では何も返しません。
  `$echo`: true の場合、画面に出力します。false の場合、関数の返り値とします (デフォルト)。
`ks_ordered_link($count, $max, $link, $label, $format, $hide_over_max, $echo)`
  携帯電話の絵文字を使った数字付きリストの出力を行います。リンク先を指定すると、その数字がアクセスキーとして使えるリンクになります。使用例は index.php を参照してください。
  `$count`: 出力したい数字。accesskey 用の番号にもなります。空文字列を与えると、絵文字数字が出なくなります。
  `$max`: 絵文字を使う最大値。これより `$count` が大きければ、絵文字の代わりに □ (四角) になります。オプションの `$hide_over_max` を true にすると、最大値を越えたときは何も出力しません。
  `$link`: リンク先 URL (必須)
  `$label`: リンク文字列。この引数を省略すると、閉じタグ (</a>) は出力しません。
  `$format`: フォーマット文字列。「`%link`」という文字列を含めておくと、その部分がリンク先 URL とリンク文字列を使ったリンクとなります。デフォルトは、「`%link`」という文字列そのものがフォーマット文字列となります。
  `$hide_over_max`: 数字が最大値を越えたとき、何も出力しない場合は true にします。false の場合は □ (四角) を出力します (デフォルト)。 `$echo`: 画面に出力する場合は true とします (デフォルト)。画面出力せず関数の帰り値とする場合は false とします。
  ※引数は、`'count=5&max=10'` のようなクエリー文字列、`array('count' => 5, 'max' => 10)` のような配列で与えることも可能です。
`ks_link_pages($args = '')`
  `wp_link_pages()` の代わりとなる、分割ページ用ナビゲートタグです。パスワード保護された投稿で認証ずみの場合は、アンカーリンクではなく、隠しフィールドにパスワードを埋め込んだフォームボタンが表示されます。このため、パスワードの再入力なしにページ遷移が可能です。
  `$args`: 各種パラメーター (`wp_link_pages()` と同じ仕様)
`ks_pagenum($before, $after, $echo)`
  指定したコンテンツが複数ページに分かれている場合、現在のページ番号を出力します。1ページのみの場合は何も出力されません。例えば、2007年9月の記事が2ページに渡る場合、1/2, 2/2 などと表示されます。
  `$before`: 前に置く HTML 文字列
  `$after`: 後に置く HTML 文字列
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
  ※引数は、`'echo=0'` のようなクエリー文字列、`array('before' => '<br />')` のような配列で与えることも可能です。
`ks_previous_post_link($format, $link, $in_same_cat, $excluded_categories, $accesskey, $echo)`
  前の投稿へのナビゲーションリンクを出力します。引数は `previous_post_link()` と同じものに、`$accesskey, $echo` が追加されています。
  `$format`: アンカー文字列書式 (デフォルトは `<img localsrc="7" alt="&laquo; ">*.%link`)
  `$link`: リンク文字列書式。`%title` なら投稿タイトル (デフォルト)、`%date` なら投稿日時。
  `$in_same_cat`: true なら同じカテゴリーの投稿に絞り込み、false なら絞り込みなし (デフォルト)
  `$excluded_categories`: リンク先として除外するカテゴリー ID
  `$accesskey`: アクセスキー文字 (デフォルトは *)
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
  ※引数は、`'echo=0'` のようなクエリー文字列、`array('link' => '%title')` のような配列で与えることも可能です。
`ks_next_post_link($format, $link, $in_same_cat, $excluded_categories, $accesskey, $echo)`
  次の投稿へのナビゲーションリンクを出力します。引数は `next_post_link()` と同じものに、`$accesskey, $echo` が追加されています。
  `$format`: アンカー文字列書式 (デフォルトは `#.%link<img localsrc="8" alt=" &raquo;">`)
  `$link`: リンク文字列書式。`%title` なら投稿タイトル (デフォルト)、`%date` なら投稿日時。
  `$in_same_cat`: true なら同じカテゴリーの投稿に絞り込み、false なら絞り込みなし (デフォルト)
  `$excluded_categories`: リンク先として除外するカテゴリー ID
  `$accesskey`: アクセスキー文字 (デフォルトは #)
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
  ※引数は、`'echo=0'` のようなクエリー文字列、`array('link' => '%title')` のような配列で与えることも可能です。
`ks_previous_posts_link($label, $accesskey, $echo)`
  前ページへのナビゲーションリンクを出力します。
  `$label`: リンク文字列 (デフォルトは `<img localsrc="7" alt="&laquo; ">*.前`)
  `$accesskey`: アクセスキー文字 (デフォルトは *)
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
  ※引数は、`'echo=0'` のようなクエリー文字列、`array('label' => '*.Prev')` のような配列で与えることも可能です。
`ks_next_posts_link($label, $accesskey, $max_page, $echo)`
  次ページへのナビゲーションリンクを出力します。
  `$label`: リンク文字列 (デフォルトは `#.次<img localsrc="8" alt=" &raquo;">`)
  `$accesskey`: アクセスキー文字 (デフォルトは #)
  `$max_page`: 最大ページ数 (通常は指定不要)
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
  ※引数は、`'echo=0'` のようなクエリー文字列、`array('label' => 'Next.#')` のような配列で与えることも可能です。
`ks_posts_nav_link($sep, $before, $after, $prev_label, $next_label, $prev_key, $next_key, $echo)`
  前後のページへのナビゲーションリンクを出力します。前後のページがないときは何も出力しません。
  `$sep`: 間に挟まれる分離文字列 (デフォルトは | )
  `$before`: ナビゲーションの前に付ける HTML 文字列
  `$after`: ナビゲーションの後ろに付ける HTML 文字列
  `$prev_label`: 前ページを示す文字列 (デフォルトは `<img localsrc="7" alt="&laquo; ">*.前`)
  `$next_label`: 次ページを示す文字列 (デフォルトは `#.次<img localsrc="8" alt=" &raquo;">`)
  `$prev_key`: 前ページのアクセスキー文字 (デフォルトは *)
  `$next_key`: 次ページアクセスキー文字 (デフォルトは #)
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
  ※引数は、`'echo=0'` のようなクエリー文字列、`array('prev_key' => '4', 'next_key' => '6')` のような配列で与えることも可能です。
`ks_posts_nav_multi($num, $first, $last, $prev_key, $next_key, $echo)`
  複数の前後ページおよび先頭・末尾ページへのナビゲーションリンクを出力します。accesskey は表示されませんが前後ページへ移動に対応しています。
  `$num`: 前後何ページリンクするかの数 (デフォルトは 3)
  `$first`: 「先頭」を示す文字列
  `$last`: 「末尾」を示す文字列
  `$prev_key`: 前ページのアクセスキー文字 (デフォルトは *)
  `$next_key`: 次ページアクセスキー文字 (デフォルトは #)
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
  ※引数は、`'echo=0'` のようなクエリー文字列、`array('prev_key' => '4', 'next_key' => '6')` のような配列で与えることも可能です。
`ks_posts_nav_dropdown($before, $after, $show_all_limit, $echo)`
  ポップアップ (ドロップダウン) 式のページナビゲーションを出力します。ページ数が `$show_all_limit`よりも多い場合は、前後 ±1, ±2, ±3, ±4, ±5, ±10, ±20, ±50, ±100, ±200, ±500, ±1000,... ページだけに絞ります。
  `$before`: 前に置く HTML 文字列
  `$after`: 後に置く HTML 文字列
  `$min_pages`: メニューを出力するページ数下限 (デフォルトは 2)
  `$show_all_limit`: すべてのページを出力するページ数上限 (デフォルトは 13)
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
  ※引数は、`'min_pages=3'` のようなクエリー文字列、`array('before' => '<br />')` のような配列で与えることも可能です。
`ks_get_comments_list_link($id)`
  コメント一覧ページを示す URL を返します。
  `$id`: 対象とする投稿 ID。投稿ループの中では空でよい。
`ks_get_comment_link($comment, $args)`
  個別のコメントへのリンク URL を返します。
  `$comment`: 対象とするコメントオブジェクトまたは ID。
  `$args`: オプション。WordPress 2.7 以降のみ有効です。`get_comment_link()` の第2引数に与えるオプションと同じです。クエリー文字列または配列を与えます。
`ks_comments_link($icon, $zero, $one, $more, $none, $sec, $accesskey, $before, $after, $echo)`
  コメント数を表示し、コメント一覧へのリンクとして出力します。
  `$icon`: リンクの前に置く絵文字。<img localsrc="NNN" /> のような XHTML を渡します。NULL を渡すとデフォルトの「メモ用紙」絵文字になります。絵文字なしにするには空文字列 '' を渡してください。
  `$zero`: コメントなしを示す HTML 文字列。空文字列 ('') を与えると、コメントなしのときコメント数表示自体を行いません。NULL を与えるとデフォルト文字列 (「コメントなし」) を用います。※HTML エスケープ済の文字列を渡してください。
  `$one`: コメント1件を示す文字列。空文字列 ('') を与えると、コメント1件のときコメント数表示自体を行いません。NULL を与えるとデフォルト文字列 (「コメント1件」) を用います。※HTML エスケープ済の文字列を渡してください。
  `$more`: コメント2件以上を示す HTML 文字列。「%」があればコメント数に置換されます。空文字列 ('') を与えると、コメント2件以上のときコメント数表示自体を行いません。NULL を与えるとデフォルト文字列 (「コメント%件」) を用います。※HTML エスケープ済の文字列を渡してください。
  `$none`: コメント停止中を示す HTML 文字列。これを表示する場合、コメント一覧ページへのリンクはされません。空文字列 ('') を与えると、コメント停止中しのときコメント数表示自体を行いません。NULL を与えるとデフォルト文字列 (「コメント停止中」) を用います。※HTML エスケープ済の文字列を渡してください。
  `$sec`: パスワード保護している投稿を示す HTML 文字列。空文字列 ('') を与えると、パスワード保護のときコメント数表示自体を行いません。NULL を与えるとデフォルト文字列 (「コメントを見る(要パスワード)」) を用います。
  `$accesskey`: アクセスキー文字列 (デフォルトはなし)
  `$before`: 前に置く HTML 文字列
  `$after`: 後に置く HTML 文字列
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
  ※引数は、`array('zero' => __('No Comments'), 'one' => __('1 Comment'))` のような配列で与えることも可能です。この場合、以下のパラメーターも指定可能です。
  `icon_zero`: コメントなしの場合の絵文字 XHTML
  `icon_one`: コメント1件の場合の絵文字 XHTML
  `icon_more`: コメント2件以上の場合の絵文字 XHTML
  `icon_none`: コメント停止中の場合の絵文字 XHTML
  `icon_sec`: パスワード保護中の場合の絵文字 XHTML
`ks_comments_post_url($id)`
  コメント投稿フォームへのリンク URL を返します。
  `$id`: 投稿 ID
`ks_comments_post_link($label, $before, $after, $icon, $accesskey, $echo)`
  コメント投稿フォームへのリンクを出力します。
  `$label`: リンク用 HTML 文字列。※HTML エスケープ済の文字列を渡してください。
  `$before`: リンクの前に置く文字列 (絵文字等)
  `$after`: リンクの後に置く文字列
  `$icon`: リンク先説明の前に置く絵文字 (デフォルトは鉛筆の絵)
  `$accesskey`: アクセスキー文字 (デフォルトはなし)
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
  ※引数は、`'echo=0'` のようなクエリー文字列、`array('before' => '<br />', 'accesskey' => '1')` のような配列で与えることも可能です。
`ks_back_to_post($icon, $label, $accesskey, $echo)`
  記事に戻るリンクを出力します。
  `$icon`: リンクの前に置く絵文字
  `$label`: リンク用 HTML 文字列。※HTML エスケープ済の文字列を渡してください。
  `$accesskey`: アクセスキー文字 (デフォルトはなし)
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
  ※引数は、`'echo=0'` のようなクエリー文字列、`array('label' => 'Back', 'accesskey' => '0')` のような配列で与えることも可能です。
`ks_separete_comments($comments, $order)`
  コメントを、通常のコメントとピン受信 (トラックバックとピンバック) に分離して返します。
  `$comments`: コメントの配列
  `$order`: コメントを時系列順。'asc' なら古い順 (デフォルト)、'desc' なら新しい順になります。
`ks_get_recent_comments($num, $type, $group_by_post)`
  最新コメント一覧を配列で返します。デフォルトでは2次元配列になります (後述)。
  `$num`: コメント表示数
  `$type`: コメントの種類を示す文字列
  (なし): コメント・トラックバック・ピンバックを混在
  comment: コメントのみ
  trackback: トラックバックのみ
  pingback: ピンバックのみ
  trackback+pingback または pings: トラックバックとピンバックを混在
  `$group_by_post`: コメントを投稿ごとにまとめるかどうか (デフォルト true)。true の場合、同じコメントへの投稿をまとめて、2次元配列とします。1次元目は投稿 ID をキーとしたコメントオブジェクトの配列です。false の場合、コメントオブジェクトの配列です。
  ※引数は、`'num=20'` のようなクエリー文字列、`array('num' => 20, 'type' => 'pings')` のような配列で与えることも可能です。
`ks_category($separator, $parents, $color, $echo)`
  表示している投稿が属するカテゴリーの一覧を出力します。
  `$separator`: カテゴリーごとの区切り文字列。
  `$parents`: 未使用です。(the_category フィルターとの互換性のために存在)
  `$color`: リンク色指定 (HTML 16 色の名前もしくは #RRGGBB の16進)
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
  ※引数は、`'color=white'` のようなクエリー文字列、`array('color' => 'white', 'echo' => false)` のような配列で与えることも可能です。
`ks_dropdown_categories($args)`
  カテゴリー一覧をポップアップメニュー (プルダウンメニュー) で表示します。`wp_dropdown_categories()` の結果から、余計な空白や class 属性を除去して出力します。
  `$args`: `wp_dropdown_categories()` と同じ仕様のパラメーター。デフォルトでは ID 順で「すべて」を含み、投稿数を表示します。
`ks_tags($before, $after, $separator)`
  表示している投稿に付与されているタグ一覧を出力します。タグが付いてないときは何も出力しません。
  `$before:` 一覧の前に置く文字列 (絵文字等)
  `$after:` 一覧の後に置く文字列
  `$separator:` タグごとの区切り文字列
  `$color`: リンク色指定 (HTML 16 色の名前もしくは #RRGGBB の16進)
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
  ※引数は、`'color=white'` のようなクエリー文字列、`array('color' => 'white', 'echo' => false)` のような配列で与えることも可能です。
`ks_tag_cloud($args)`
  タグクラウドを出力します。`wp_tag_cloud()` と同じ動作をしますが、余計な空白や title 属性、rel 属性などを除去しています。独自に、リンク色指定ができる `color` 引数を定義しています。
`ks_get_archives($args)`
  アーカイブ一覧を出力します。`wp_get_archives()` の結果から、余計な空白や title 属性を除去して出力します。
  `$arg: ks_get_archives()` と同じ仕様のパラメーター。ただし、WordPress 2.6 以前でも echo パラメーターが有効です (echo=0 で文字列として取得)。
`ks_list_bookmarks($args)`
  ブックマーク(ブログロール)一覧を出力します。`wp_list_bookmarks()` の結果から、余計な空白や class, title, rel 属性を除去して出力します。
  `$arg: wp_list_bookmarks()` (または `get_links_list()`) と同じ仕様のパラメーター
`ks_dropdown_archives($args)`
  アーカイブ一覧をポップアップメニュー (プルダウンメニュー) で出力します。`wp_get_archives()` の結果から、余計な空白や title 属性を除去して出力します。
  `$arg: ks_get_archives()` と同じ仕様のパラメーター。ただし、WordPress 2.6 以前でも echo パラメーターが有効です (echo=0 で文字列として取得)。
`ks_list_bookmarks($args)`
  ブックマーク(ブログロール)一覧を出力します。`wp_list_bookmarks()` の結果から、余計な空白や class, title, rel 属性を除去して出力します。
  `$arg: wp_list_bookmarks()` (または `get_links_list()`) と同じ仕様のパラメーター
`ks_pages_menu($sep, $before, $after, $args)`
  固定ページへのナビゲーションを出力します。デフォルトは親ページのみです。子ページが存在する場合、親ページ一覧のあとに、「ページ一覧ページ」(menu_pages.php) へのリンクが出ます。
  `$sep`: 項目ごとの区切り
  `$before`: 前に付ける HTML タグ
  `$after`: 後ろに付ける HTML タグ
  `$args`: 表示用パラメーター。`get_pages()` の引数が使えます。見せたくないページがある場合、exclude=MM,NN として見せたくないページの page_id を与えることが可能です (MM, NN がページ ID)。さらに、'parent_only=0' とすると、すべてのページをリストアップし、'echo=0' を入れると出力するかわりに HTML を返り値とします。
  ※すべての引数をまとめてクエリー文字列／配列としても構いません。例えば `'sep=|&exclude=14,15'` もしくは `array('before' => '<br />', 'echo' => false)` などとできます。
`ks_get_admin_user($user_id)`
  管理者ユーザーを取得します。返り値は WP_User オブジェクトです。
  `$user_id`: ユーザー ID。省略すると、user_id が一番小さい、管理者権限のあるユーザーを自動的に探します。
`ks_switch_pc_view($before, $after, $color)`
  スマートフォン等「その他」端末の場合、PC 表示に切り替えるかリンクを出力します。
  `$before`: リンクの前に置く文字列
  `$after`: リンクの後に置く文字列
  `$color`: リンク色指定 (HTML 16 色の名前もしくは #RRGGBB の16進)
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
  ※引数は、`'color=white'` のようなクエリー文字列、`array('before' => '|', 'color' => 'white')` のような配列で与えることも可能です。
`ks_switch_inline_images($before, $after, $color)`
  各社 3G, ウィルコム, スマートフォン等で、画像をインライン表示するかリンクに変換するかの切り替えメニューを出力します。
  `$before`: メニューの前に置く文字列
  `$after`: メニューの後に置く文字列
  `$color`: リンク色指定 (HTML 16 色の名前もしくは #RRGGBB の16進)
  `$echo`: true の場合、画面に出力します (デフォルト)。false の場合、関数の返り値とします。
  ※引数は、`'color=white'` のようなクエリー文字列、`array('before' => '|', 'color' => 'white')` のような配列で与えることも可能です。

#### リダイレクトテンプレート専用タグ

リダイレクトテンプレート redir.php でのみ使えるテンプレートタグです。redir.php テンプレートの解説も参照してください。なお、`ks_is_redir()` はどこでも使えるので上で解説ずみです。

`ks_redir_get($key)`
  リダイレクトにかかわる変数を得ます。`$key` には以下の値が使えます。
  `url`: リダイレクト先 URL。リダイレクト先が現在と同じホストなど http:// が省ける場合は、/ から始まる絶対パス形式になります。
  `full_url`: リダイレクト先 URL。http:// が必ず付く長い形式です。
  `mobile_url`: リダイレクト先の携帯サイト URL
`ks_redir_has($key)`
  リダイレクトにかかわる変数およびその値が存在するかを確認します。存在すれば true, 存在しなければ false になります (`isset() && ! empty()` です)。`$key` に使える値は `ks_redir_get()` と同じです。
`ks_redir_same_host()`
  リダイレクト先が、PC 向けサイトと携帯向けサイトのホスト (FQDN)、ポート番号、スキーム (http か https か) がすべて同一なら true、いずれかが違う場合は false になります。URL が同一でなくても / 以下のパスだけが違う場合は true になります。

#### ページ分割機能用タグ

`<!--start paging-->`
`<!--end paging-->`
  ページ分割機能において、分割対象領域を示します。この2つに挟まれた区間が分割され、前者より上／後者より下にある XHTML コードはすべてのページに出力されます (共通領域)。1ページ中に start paging が2か所あるときは先に出た方が、end paging が2か所あるときは後に出た方が適用されます。前者が存在しないときは <body> タグ、後者が存在しないときは「<hr /><a name="tail"」または「<hr /><div><a name="tail"」という文字列もしくは </body> タグを代わりに使います。
  なお、共通領域が広くて分割に使えるバイト数があまりに少ないとき (256 バイト未満) は、強制的に <body>〜ページ終端を分割対象とします。
`<!--start paging[after]-->`
`<!--start paging[before,after]-->`
`<!--end paging[before]-->`
`<!--end paging[before,after]-->`
  上記のように start paging, end paging にパラメータを与えた場合、分割時に付与される罫線 (<hr />) を、与えたパラメータに差し替えられます。パラメータは、シングル／ダブルクォートで囲む必要はありません。例えば、
  `<!--start paging[<hr color="<?php echo $ks_settings['hr_color']; ?>" />]-->`
  とすれば、header.php で定義した罫線の色を用いた罫線要素になります。
  start paging で引数1つのときは after のみ指定、end paging で引数1つのときは before のみ指定となることに注意してください。分割時の罫線を出したくないときは、before, after ともに空の指定、つまり `<!--start paging[,]-->` としてください。

### 他のプラグインとの連携

他のプラグインにおいて、PC 向け出力か携帯電話出力かを区別できるよう、以下の関数を用意しています。

`is_ktai()`
  携帯電話出力なら、事業者名を返します。DoCoMo, KDDI, SoftBank, WILLCOM, EMOBILE, Unknown のいずれかです。ディズニー・モバイルは SoftBank になります。
  引数に 'type' を与えると、サービス種別を返します。返り値は `ks_service_type()` と同じです。
  引数に 'flat_rate' を与えると、パケット定額制に対応しているかどうかを返します。`ks_is_flat_rate()` と同じ動作です。
  引数に 'search_engine' を与えると、検索エンジンからのアクセスかどうかを判別します (UserAgent ベースの判定)。検索エンジンの場合、クローラー名になります。対応している検索エンジンは、Googlebot, Yahoo! Japan (J-SRD, J_MBS), LD_mobile_bot, ichiro/mobile goo, frout.jp, Baiduspider です。

本プラグインが有効・無効にかかわらずエラーが出ないよう、次のようにして使ってください。

    if (function_exists('is_ktai') && is_ktai()) { ?>
    <img localsrc="334" alt="[new] " />
    <?php }

次は、携帯電話でない場合にスタイルシートを追加する例です。この判別方法は、Mobile Eye+ を使っている場合や、WPhone Admin Plugin をインストールしている場合にも対応します。

    if ((! function_exists('is_mobile') || ! is_mobile())
     && (! function_exists('is_ktai')   || ! is_ktai())) { ?>
    <style type="text/css" media="all">
    .locationurl { display:none; }
    </style>
    <?php }

以前は、原則として `is_mobile()` 関数を提供し、WPhone Admin Plugin が存在するときのみ、名前の衝突を避けるため `is_ktai()` に名前を変えていました。

しかし、WPhone プラグインの提供する is_mobile() 関数はソフトバンク PDC 端末を検出しないことが判明したため、`is_mobile()` だけで携帯電話かどうかの判定を行うことができず、`is_ktai()` 関数も併用する必要が出てしまいました (具体的なコードは上記の通り)。

そうなると、Mobile Eye+ との互換性を取るために、Mobile Eye+ でも使っている関数名である `is_mobile()` という名前にする、という措置も無意味となってしまいました。このため、バージョン 0.98 より `is_ktai()` 関数に一本化することとしました。

# WPhone Admin Plugin の作りが悪い、とも言えますね ;-)

### 再配布について

Ktai Style 附属テーマを改造した携帯テーマは、Ktai Style のライセンスである GPL v2 と互換性のあるライセンスを適用する必要があります。「再配布禁止」など、矛盾する制約を追加することはできません。

ただし、アイコン画像・背景画像を独自に作成した場合、その画像については好きなライセンスを設定することができます。したがって、「PHP のテンプレート部分は GPL。CSS スタイルシートおよび画像ファイルは再配布不可」という複合ライセンスを設定してみてください。

もしくは、Ktai Style の附属テーマを参考に、スクラッチで携帯テーマを記述しても構いません。この場合、著作権はすべてあなたに属するため、好きなライセンスを設定できます。ただし、テンプレートファイルから Ktai Style および WordPress の API を呼び出すことが必須ですから、GPL (もしくは互換性のあるライセンス) が適用されるべきと考えられます。

ちなみに、GPL は有償で配布することが可能ですが、再配布を禁止できないこと、利用用途に制約をかけられないこと (アダルトサイトで使用禁止にできない等) が特徴です。

以上