Як і більшість інших, я настійно рекомендую використовувати WPTouch. Однак він створений більше для підтримки блогів, ніж інших форматів веб-сайтів, тому я знаю, що це не панацея від мобільних рішень (я запускаю свій портфоліо в WordPress так само, як і мій блог, і моє портфоліо виглядає як ****
у WPTouch).
Тож я переглянув код, щоб знайти відповідні частини, які вам потрібно буде використовувати для копіювання виявлення мобільного браузера. По-перше, як згадував Ян Фабрі, це список користувачів мобільних браузерних агентів. WPTouch включає список за замовчуванням, але також дозволяє додавати власні користувацькі агенти з налаштуванням або з фільтром під назвою wptouch_user_agents
:
function bnc_wptouch_get_user_agents() {
$useragents = array(
"iPhone", // Apple iPhone
"iPod", // Apple iPod touch
"Android", // 1.5+ Android
"dream", // Pre 1.5 Android
"CUPCAKE", // 1.5+ Android
"blackberry9500", // Storm
"blackberry9530", // Storm
"blackberry9520", // Storm v2
"blackberry9550", // Storm v2
"blackberry9800", // Torch
"webOS", // Palm Pre Experimental
"incognito", // Other iPhone browser
"webmate", // Other iPhone browser
"s8000", // Samsung Dolphin browser
"bada" // Samsung Dolphin browser
);
$settings = bnc_wptouch_get_settings();
if ( isset( $settings['custom-user-agents'] ) ) {
foreach( $settings['custom-user-agents'] as $agent ) {
if ( !strlen( $agent ) ) continue;
$useragents[] = $agent;
}
}
asort( $useragents );
// WPtouch User Agent Filter
$useragents = apply_filters( 'wptouch_user_agents', $useragents );
return $useragents;
}
Однак м'ясо плагіна є класом:
class WPtouchPlugin {
var $applemobile;
var $desired_view;
var $output_started;
var $prowl_output;
var $prowl_success;
...
Конструктор плагіна ( function WPtouchPlugin()
) спочатку додає дію на plugins_loaded
гачок, щоб виявити агент користувача мобільного браузера і встановити $applemobile
значення true. Ось конкретна функція:
function detectAppleMobile($query = '') {
$container = $_SERVER['HTTP_USER_AGENT'];
$this->applemobile = false;
$useragents = bnc_wptouch_get_user_agents();
$devfile = compat_get_plugin_dir( 'wptouch' ) . '/include/developer.mode';
foreach ( $useragents as $useragent ) {
if ( preg_match( "#$useragent#i", $container ) || file_exists( $devfile ) ) {
$this->applemobile = true;
}
}
}
Тепер плагін знає, що ви використовуєте мобільний браузер (за даними користувача веб-агента). Наступна м'ясна частина плагіна - це набір фільтрів:
if ( strpos( $_SERVER['REQUEST_URI'], '/wp-admin' ) === false ) {
add_filter( 'stylesheet', array(&$this, 'get_stylesheet') );
add_filter( 'theme_root', array(&$this, 'theme_root') );
add_filter( 'theme_root_uri', array(&$this, 'theme_root_uri') );
add_filter( 'template', array(&$this, 'get_template') );
}
Кожен з цих фільтрів викликає метод, який перевіряє, встановлено чи ні $applemoble
. Якщо це так, то WordPress буде використовувати ваш мобільний таблицю стилів, вашу мобільну тему та шаблон мобільного посту / сторінки замість типових для вашої теми. По суті, ви переосмислюєте поведінку за замовчуванням WordPress, залежно від того, чи використовується у веб-переглядачі користувальницький агент, який відповідає вашому списку "мобільних браузерів".
WPTouch також включає можливість вимкнення теми для мобільних пристроїв - коли ви відвідуєте сайт WPTouch на iPhone, внизу є кнопка, яка дозволяє вам нормально переглядати сайт. Ви можете розглянути це під час створення власного рішення.
Відмова від відповідальності: Весь вищевказаний код був скопійований із вихідного для WPTouch версії 1.9.19.4 та захищений під GPL. Якщо ви повторно використовуєте код, ваша система також повинна відповідати умовам GPL. Я не писав цей код.