Как и большинство других, я настоятельно рекомендую использовать 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
установлено ли значение true. Если это так, тогда WordPress будет использовать вашу мобильную таблицу стилей, мобильную тему и мобильный пост / шаблон страницы вместо стандартных по умолчанию для вашей темы. По сути, вы переопределяете поведение WordPress по умолчанию в зависимости от того, есть ли в используемом браузере пользовательский агент, который соответствует вашему списку «мобильных браузеров».
WPTouch также включает в себя возможность отключать мобильную тему - когда вы посещаете сайт WPTouch на iPhone, внизу есть кнопка, которая позволяет вам просматривать сайт в обычном режиме. Возможно, вы захотите учесть это при создании собственного решения.
Отказ от ответственности: весь приведенный выше код был скопирован из исходного кода для WPTouch версии 1.9.19.4 и защищен в соответствии с GPL. Если вы повторно используете код, ваша система также должна соответствовать условиям GPL. Я не писал этот код.