अन्य लोगों की तरह, मैं अत्यधिक WPTouch का उपयोग करने की सलाह देता हूं। हालाँकि, यह अन्य वेबसाइट स्वरूपों की तुलना में ब्लॉग्स को सपोर्ट करने के लिए अधिक बनाया गया है, इसलिए मुझे पता है कि यह मोबाइल समाधानों का रामबाण नहीं है (मैं अपने पोर्टफोलियो को वर्डप्रेस के साथ-साथ अपने ब्लॉग पर भी चलाता हूं, और मेरा पोर्टफोलियो ****
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
सही पर सेट करने के लिए हुक में एक क्रिया जोड़ता है। यहाँ विशिष्ट कार्य है:
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
सही पर सेट है या नहीं । यदि यह है, तो वर्डप्रेस आपके मोबाइल स्टाइलशीट, आपके मोबाइल थीम और मोबाइल थीम / पेज टेम्पलेट का उपयोग आपकी थीम के लिए डिफ़ॉल्ट के बजाय करेगा। मूल रूप से, आप वर्डप्रेस के डिफ़ॉल्ट व्यवहार को ओवरराइड कर रहे हैं, जिसके आधार पर कि ब्राउज़र का उपयोग किया जा रहा है या नहीं, आपके "उपयोगकर्ता ब्राउज़र" की सूची से मेल खाता है।
WPTouch में मोबाइल थीम को बंद करने की क्षमता भी शामिल है - जब आप एक iPhone पर WPTouch साइट पर जाते हैं, तो नीचे एक बटन होता है जो आपको सामान्य रूप से साइट देखने की अनुमति देता है। आप इस पर विचार करना चाह सकते हैं क्योंकि आप अपने समाधान का निर्माण करते हैं।
अस्वीकरण: उपरोक्त सभी कोड WPTouch संस्करण 1.9.19.4 के लिए स्रोत से बाहर कॉपी किया गया था और GPL के तहत संरक्षित है। यदि आप कोड का फिर से उपयोग करते हैं, तो आपके सिस्टम को GPL की शर्तों का भी पालन करना चाहिए। मैंने यह कोड नहीं लिखा था।