出来れば、functions.phpに特定のURLを複数記述することで実装できたらありがたいです。
どうぞよろしくお願いします。
wptouch > http://wordpress.org/extend/plugins/wptouch/
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」など適当な名前で保存して、プラグインのディレクトリにアップロードして有効化してください。
すばらしいです!
2012/08/05 08:48:49プラグインを直接書き換える方法はなんとか実装できていたのですが、おっしゃるとおり、プラグインのバージョンアップにどのように対応するかで悩んでおりました。
早速試してみます。ありがとうございます!