เช่นเดียวกับคนอื่น ๆ ฉันขอแนะนำให้ใช้ WPTouch อย่างไรก็ตามมันถูกสร้างขึ้นเพื่อรองรับบล็อกมากกว่ารูปแบบเว็บไซต์อื่น ๆ ดังนั้นฉันจึงรู้ว่าไม่ใช่วิธีแก้ปัญหามือถือ (ฉันเรียกใช้พอร์ตโฟลิโอของฉันบน WordPress รวมถึงบล็อกของฉันและพอร์ตโฟลิโอของฉันดูเหมือน****
WPTouch)
ดังนั้นฉันลองดูรหัสเพื่อค้นหาส่วนที่เกี่ยวข้องที่คุณต้องใช้เพื่อทำซ้ำการตรวจจับเบราว์เซอร์มือถือ ประการแรกตามที่ Jan Fabry กล่าวถึงคือรายชื่อตัวแทนผู้ใช้เบราว์เซอร์มือถือ 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
เป็นจริง นี่คือฟังก์ชั่นเฉพาะ:
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 ด้วย ฉันไม่ได้เขียนรหัสนี้