Diğerleri gibi WPTouch kullanmanızı şiddetle tavsiye ederim. Bununla birlikte, blogları diğer web sitesi formatlarından daha fazla destekleyecek şekilde oluşturulmuştur, bu yüzden mobil çözümlerin her derde deva olmadığını biliyorum (portföyümü WordPress'te ve ****
blogumda kullanıyorum ve portföyüm WPTouch'ta görünüyor ).
Bu yüzden, mobil tarayıcı algılamayı çoğaltmak için kullanmanız gereken ilgili bölümleri bulmak için koda bir göz attım. İlk olarak, Jan Fabry tarafından belirtildiği gibi, mobil tarayıcı kullanıcı aracıları listesidir. WPTouch varsayılan bir liste içerir, ancak aynı zamanda bir ayara veya denilen bir filtreye sahip özel kullanıcı aracıları eklemenizi sağlar 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;
}
Eklentinin eti olsa da, bir sınıftır:
class WPtouchPlugin {
var $applemobile;
var $desired_view;
var $output_started;
var $prowl_output;
var $prowl_success;
...
Eklentinin yapıcısı ( function WPtouchPlugin()
), önce plugins_loaded
mobil tarayıcının kullanıcı aracısını tespit etmek ve $applemobile
doğru olarak ayarlamak için kancaya bir eylem ekler . İşte özel fonksiyon:
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;
}
}
}
Artık eklenti bir mobil tarayıcı kullandığınızı biliyor (tarayıcının kullanıcı aracısına göre). Eklentinin bir sonraki etli kısmı bir dizi filtredir:
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') );
}
Bu filtrelerin her biri, $applemoble
true olarak ayarlanıp ayarlanmadığını kontrol eden bir yöntem çağırır . Öyleyse, WordPress, mobil stil sayfanızı, mobil temanızı ve temanız için varsayılan olanların yerine mobil bir yazı / sayfa şablonunu kullanır. Temel olarak, kullanılmakta olan tarayıcının "mobil tarayıcılar" listenizle eşleşen bir kullanıcı aracısı olup olmamasına bağlı olarak WordPress'in varsayılan davranışını geçersiz kılıyorsunuz.
WPTouch ayrıca mobil temayı kapatma yeteneğine de sahiptir - bir iPhone'daki bir WPTouch sitesini ziyaret ettiğinizde, en altta siteyi normal şekilde görüntülemenizi sağlayan bir düğme bulunur. Bunu kendi çözümünüzü oluştururken düşünmek isteyebilirsiniz.
Feragatname: Yukarıdaki kodun tümü WPTouch sürüm 1.9.19.4 için kaynaktan kopyalandı ve GPL kapsamında korunuyor. Kodu tekrar kullanırsanız, sisteminizin de GPL şartlarına uyması gerekir. Bu kodu ben yazmadım.