Wie die meisten anderen empfehle ich die Verwendung von WPTouch. Es wurde jedoch mehr für die Unterstützung von Blogs als für andere Websiteformate entwickelt, sodass ich weiß, dass es nicht das Allheilmittel für mobile Lösungen ist (ich verwende mein Portfolio sowohl in WordPress als auch in meinem Blog und mein Portfolio sieht aus wie ****
in WPTouch).
Also habe ich mir den Code angesehen, um die relevanten Teile zu finden, die Sie zum Replizieren der Erkennung des mobilen Browsers benötigen. Erstens, wie von Jan Fabry erwähnt, handelt es sich um eine Liste von Benutzeragenten für mobile Browser. WPTouch enthält eine Standardliste, aber Sie können auch benutzerdefinierte Benutzeragenten mit einer Einstellung oder mit einem Filter namens hinzufügen 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;
}
Das Fleisch des Plugins ist jedoch eine Klasse:
class WPtouchPlugin {
var $applemobile;
var $desired_view;
var $output_started;
var $prowl_output;
var $prowl_success;
...
Der Konstruktor ( function WPtouchPlugin()
) des Plugins fügt dem plugins_loaded
Hook zunächst eine Aktion hinzu , um den Benutzeragenten des mobilen Browsers zu erkennen und $applemobile
auf true zu setzen. Hier ist die spezifische Funktion:
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;
}
}
}
Jetzt weiß das Plugin, dass Sie einen mobilen Browser verwenden (laut User Agent des Browsers). Der nächste Teil des Plugins besteht aus einer Reihe von Filtern:
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') );
}
Jeder dieser Filter ruft eine Methode auf, die prüft, ob $applemoble
true festgelegt ist oder nicht . Wenn dies der Fall ist, verwendet WordPress Ihr mobiles Stylesheet, Ihr mobiles Design und eine mobile Post- / Seitenvorlage anstelle der Standardvorlagen für Ihr Design. Grundsätzlich setzen Sie das Standardverhalten von WordPress außer Kraft, je nachdem, ob der verwendete Browser über einen Benutzeragenten verfügt, der Ihrer Liste der "mobilen Browser" entspricht.
WPTouch bietet auch die Möglichkeit, das mobile Design zu deaktivieren. Wenn Sie eine WPTouch-Site auf einem iPhone besuchen, befindet sich unten eine Schaltfläche, mit der Sie die Site normal anzeigen können. Sie können dies berücksichtigen, wenn Sie Ihre eigene Lösung erstellen.
Haftungsausschluss: Der gesamte oben genannte Code wurde aus der Quelle für WPTouch Version 1.9.19.4 kopiert und ist unter der GPL geschützt. Wenn Sie den Code wiederverwenden, muss Ihr System auch den Bestimmungen der GPL entsprechen. Ich habe diesen Code nicht geschrieben.