wordpress 過去記事

[WordPress]KtaiStyleプラグインでプレビュー表示する方法

前回はKtaiStyleプラグインで、画像表示の制御を行いましたが

http://shimashima.com/i/xxxx
の様に/i/配下を携帯ページとして作成したけど、PCでも携帯表示させてプレビューしたいよ
いちいち携帯で見るorUA偽装して見るのが面倒だよー

って感じのケースの場合に、KtaiStyleのテーマでプレビューする方法です
KtaiStyleは携帯端末でアクセスされた場合にどんなページでも携帯用に変換するのが正しい使い方ですが、今回は特定のページを携帯用のページとして作っている点が異なります
そして携帯用に作られたページはPCで携帯テーマでプレビューできるという改造(?)になります

こちらも前回同様、プラグイン作者様には一切迷惑をかけるつもりもないので、自己責任でお願いします
ちなみに今回使用したのは開発版2.1.0-beta2です

さて、実装
operators\base.phpの以下の場所(48行目あたり)
[php]
/* ==================================================
* @param none
* @return object $ktai
*/
public static function factory($ua = NULL) {
$ktai = NULL;
$ua = $ua ? $ua : $_SERVER['HTTP_USER_AGENT'];
if ( isset($_GET['preview']) && isset($_GET['mobile']) ) {
$ua = 'Ktai_Theme_Preview';
$ktai = new KtaiService_Preview($ua);
} elseif (preg_match('!\b(iP(hone|od);|Android |^BlackBerry[0-9a-z]+/)!', $ua, $name) && ks_option('ks_theme_touch')) {
$ktai = new KtaiService_Touch($ua);
$ktai->set('term_name', $name[1]);
} elseif (preg_match('!^DoCoMo/1!', $ua)) {
[/php]
ここで、UserAgentから機種判定させて、携帯テーマを使うかどうかの判定を行っています
if文がelseifでしばらく続きますが、終わったところの次に以下のコードを埋め込みます
[php]
} elseif (preg_match('/(\bNitro\) Opera|Nintendo (\w+);)/', $ua, $type)) {
$ktai = new KtaiService_General($ua);
$ktai->set('term_name', isset($type[2]) ? "Nintendo $type[2]" : 'Nintendo DS');
} elseif (preg_match('!^mixi-mobile-converter/!', $ua)) {
$ktai = new KtaiService_Converter($ua);
$ktai->set('term_name', 'mixi Mobile');
}

//ここから
//REQUEST_URIに/i/が含まれていた場合、携帯用に表示する
$pagename = $_SERVER['REQUEST_URI'];
if(stripos($pagename, '/i/')>0){
require_once dirname(__FILE__) . '/i-mode.php';
$ktai = new KtaiService_imode_mova($ua);
//ここまで
}
[/php]
という感じにREQUEST_URIの中に/i/とあったら、強制的にiモード用に表示させることで対応させます

例としてhttp://shimashima.com/i/xxxxというような形としましたが、特定のページならばページ名と合致させるとか、wp関数でGET_IDとかでページIDで個別に設定しちゃうとか応用は可能です

一つ注意したい点は、タイトルにプレビューでとありますが、本番でもPCからアクセスしてもこのページは携帯表示になってしまうので、それが嫌な場合はプレビュー時にだけこのテクニック(?)を使って、すぐに戻してください

-wordpress, 過去記事
-, , ,

© 2024 shimashima.com