다른 대부분과 마찬가지로 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
true로 설정 합니다. 특정 기능은 다음과 같습니다.
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
true로 설정되어 있는지 여부를 확인하는 메소드를 호출 합니다. 그렇다면 WordPress는 테마의 기본 스타일 대신 모바일 스타일 시트, 모바일 테마 및 모바일 게시물 / 페이지 템플릿을 사용합니다. 기본적으로 사용중인 브라우저에 "모바일 브라우저"목록과 일치하는 사용자 에이전트가 있는지 여부에 따라 WordPress의 기본 동작을 재정의합니다.
WPTouch에는 모바일 테마를 끄는 기능도 포함되어 있습니다. iPhone의 WPTouch 사이트를 방문 할 때 하단에 사이트를 정상적으로 볼 수있는 버튼이 있습니다. 자신 만의 솔루션을 구축 할 때이를 고려할 수 있습니다.
면책 조항 : 위의 모든 코드는 WPTouch 버전 1.9.19.4 의 소스에서 복사되었으며 GPL로 보호됩니다. 코드를 재사용 할 경우 시스템도 GPL의 조항을 준수해야합니다. 이 코드를 작성하지 않았습니다.