Wordpressのプラグインwptouchのカスタマイズについて教えてください。ブログをスマホ対応するためwptouchを利用していますが、特定のページだけwptouchを適用しない方法をお教えください。

出来れば、functions.phpに特定のURLを複数記述することで実装できたらありがたいです。
どうぞよろしくお願いします。
wptouch > http://wordpress.org/extend/plugins/wptouch/

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/08/09 06:03:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:rouge_2008 No.1

回答回数595ベストアンサー獲得回数351

ポイント300pt

WPtouchでユーザーエージェントを判定してから、テーマの切り替えを行っている為、今回やりたい事の場合、プラグインのファイルを直接編集する方法になります。

「wp-content/plugins/wptouch/wptouch.php」の次の部分(※616行目以降)を

		foreach ( $useragents as $useragent ) {
			if ( preg_match( "#$useragent#i", $container ) || file_exists( $devfile ) ) {


次のように変更します。

		// 配列にPC用テーマで表示したいページのスラッグを指定します。(※1ページだけの場合は、文字列でしていしても大丈夫です。)
		$pages = array('shopping', 'example', 'sample-page', 'sample-page2');
		$exclude_pages = is_array($pages) ? implode('|', $pages) : $pages;
		foreach ( $useragents as $useragent ) {
			if ( (!preg_match('#/'. $exclude_pages .'/#i', esc_html($_SERVER['REQUEST_URI'])) && preg_match( "#$useragent#i", $container )) || file_exists( $devfile ) ) {



次はプラグイン化した場合です。(※上記プラグインファイルを直接変更する方法と違って、WPtouchがバージョンアップしてもそのまま使用できますが、今後のバージョンアップでの変更箇所によっては、動作しなくなる可能性もあります。)

<?php
/*
Plugin Name: Disable WPtouch on Page
Version: 0.1
Description: A plugin for WPtouch.
Author: rouge_2008
 */

function disable_wptouch() {
	global $wp_filter;
		// 配列にPC用テーマで表示したいページのスラッグを指定します。(※1ページだけの場合は、文字列でしていしても大丈夫です。)
	$pages = array('shopping', 'example', 'sample-page', 'sample-page2');
	$exclude_pages = is_array($pages) ? implode('|', $pages) : $pages;
	if(preg_match('#/'. $exclude_pages .'/#i', esc_html($_SERVER['REQUEST_URI']))) {
		foreach($wp_filter['plugins_loaded'][10] as $filters) {
			if(is_array($filters['function'])) {
				$num = count($filters['function']);
				for($n=0; $n < $num; $n++) {
					if(gettype($filters['function'][$n]) == 'object' && $filters['function'][$n]->applemobile == true) {
						$filters['function'][$n]->applemobile = false;
					}
				}
			}
		}
	}
}
add_action('plugins_loaded', 'disable_wptouch', 15);



※ページの指定方法は、上記プラグインを直接編集する場合と同じです。
※上記を記述したファイルを「disable-wptouch-on-page.php」など適当な名前で保存して、プラグインのディレクトリにアップロードして有効化してください。

id:kanienoteiou

すばらしいです!
プラグインを直接書き換える方法はなんとか実装できていたのですが、おっしゃるとおり、プラグインのバージョンアップにどのように対応するかで悩んでおりました。
早速試してみます。ありがとうございます!

2012/08/05 08:48:49
  • id:rouge_2008
    WPtouchを適用しないページはどのように表示するのでしょう?
    スマートフォンからアクセスがあった場合でもPC用のテーマで表示し、Mobile Themeへの切り替え「On/Off」ボタンを表示しないという事でしょうか?
  • id:kanienoteiou
    お返事ありがとうございます。
    はい。そうです。
    普通にPC用のページをそのまま表示したいのです。
    そこには、Mobile Themeへの切り替えボタンも非表示にしたいです。
    つまり、wptouchをまったく読み込まないのがベストです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません