Seperti kebanyakan orang lain, saya sangat merekomendasikan menggunakan WPTouch. Namun, ini dibangun lebih untuk mendukung blog daripada format situs web lain, jadi saya tahu itu bukan obat mujarab dari solusi seluler (saya menjalankan portofolio saya di WordPress dan juga blog saya, dan portofolio saya seperti ****
di WPTouch).
Jadi saya memang melihat kode untuk menemukan bagian yang relevan yang perlu Anda gunakan untuk meniru deteksi browser seluler. Pertama, sebagaimana disebutkan oleh Jan Fabry, adalah daftar agen pengguna peramban seluler. WPTouch menyertakan daftar default, tetapi juga memungkinkan Anda untuk menambahkan agen pengguna khusus dengan pengaturan atau dengan filter yang disebut 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;
}
Daging plugin adalah kelas:
class WPtouchPlugin {
var $applemobile;
var $desired_view;
var $output_started;
var $prowl_output;
var $prowl_success;
...
Konstruktor plugin ( function WPtouchPlugin()
) pertama-tama menambahkan aksi ke plugins_loaded
hook untuk mendeteksi agen pengguna peramban seluler dan disetel $applemobile
ke true. Inilah fungsi spesifiknya:
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;
}
}
}
Sekarang plugin tahu Anda menggunakan peramban seluler (sesuai dengan agen pengguna peramban). Bagian gemuk berikutnya dari plugin adalah seperangkat filter:
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') );
}
Setiap filter ini memanggil metode yang memeriksa apakah $applemoble
disetel ke true atau tidak . Jika ya, maka WordPress akan menggunakan stylesheet seluler Anda, tema seluler Anda, dan templat pos / halaman seluler alih-alih yang default untuk tema Anda. Pada dasarnya, Anda mengabaikan perilaku default WordPress berdasarkan apakah browser yang digunakan memiliki agen pengguna yang cocok dengan daftar "browser seluler" Anda.
WPTouch juga mencakup kemampuan untuk mematikan tema seluler - ketika Anda mengunjungi situs WPTouch di iPhone, ada tombol di bagian bawah yang memungkinkan Anda untuk melihat situs secara normal. Anda mungkin ingin mempertimbangkan ini ketika Anda membangun solusi Anda sendiri.
Penafian: Semua kode di atas disalin dari sumber untuk WPTouch versi 1.9.19.4 dan dilindungi oleh GPL. Jika Anda menggunakan kembali kode tersebut, sistem Anda juga harus mematuhi ketentuan GPL. Saya tidak menulis kode ini.