Version Description
- edited: edit readme
- added: add cookies 'multi-device-switcher', 'disable-switcher'
- new features: Disable Switcher
- fixed: fix get_options_userAgent(), multi_device_switcher_get_options()
- fixed: add reserved words validate
- new features: Multi Device Switcher Command
- added: add option settings into Theme Customizer
- fixed: refactoring by the PHP_CodeSniffer
Download this release
Release Info
Developer | thingsym |
Plugin | Multi Device Switcher |
Version | 1.4.0 |
Comparing to | |
See all releases |
Code changes from version 1.3.0 to 1.4.0
- languages/multi-device-switcher-ja.mo +0 -0
- languages/multi-device-switcher-ja.po +13 -1
- languages/multi-device-switcher.pot +12 -0
- multi-device-switcher.php +366 -175
- pc-switcher-widget.php +27 -24
- readme.md +166 -5
- readme.txt +125 -6
- screenshot-1.png +0 -0
- screenshot-2.png +0 -0
- screenshot-3.png +0 -0
- screenshot-5.png +0 -0
- uninstall.php +2 -1
- wp-cli.php +465 -0
languages/multi-device-switcher-ja.mo
CHANGED
Binary file
|
languages/multi-device-switcher-ja.po
CHANGED
@@ -3,7 +3,7 @@ msgstr ""
|
|
3 |
"Project-Id-Version: Multi Device Switcher\n"
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
"POT-Creation-Date: 2012-01-17 22:01+0900\n"
|
6 |
-
"PO-Revision-Date:
|
7 |
"Last-Translator: \n"
|
8 |
"Language-Team: Thingsym\n"
|
9 |
"Language: ja_JP\n"
|
@@ -98,6 +98,18 @@ msgstr "PC"
|
|
98 |
msgid "Are you sure you want to delete %1$s ?"
|
99 |
msgstr "%1$s を削除してよろしいですか?"
|
100 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
msgid "Donationware"
|
102 |
msgstr "ドネーションウェア (寄付)"
|
103 |
|
3 |
"Project-Id-Version: Multi Device Switcher\n"
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
"POT-Creation-Date: 2012-01-17 22:01+0900\n"
|
6 |
+
"PO-Revision-Date: 2015-01-15 17:26+0900\n"
|
7 |
"Last-Translator: \n"
|
8 |
"Language-Team: Thingsym\n"
|
9 |
"Language: ja_JP\n"
|
98 |
msgid "Are you sure you want to delete %1$s ?"
|
99 |
msgstr "%1$s を削除してよろしいですか?"
|
100 |
|
101 |
+
msgid "Disable Switcher"
|
102 |
+
msgstr "切り替え無効"
|
103 |
+
|
104 |
+
msgid "Path"
|
105 |
+
msgstr "パス"
|
106 |
+
|
107 |
+
msgid "Regex mode"
|
108 |
+
msgstr "正規表現モード"
|
109 |
+
|
110 |
+
msgid "Enable Regex"
|
111 |
+
msgstr "正規表現を有効化"
|
112 |
+
|
113 |
msgid "Donationware"
|
114 |
msgstr "ドネーションウェア (寄付)"
|
115 |
|
languages/multi-device-switcher.pot
CHANGED
@@ -98,6 +98,18 @@ msgstr ""
|
|
98 |
msgid "Are you sure you want to delete %1$s ?"
|
99 |
msgstr ""
|
100 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
msgid "Donationware"
|
102 |
msgstr ""
|
103 |
|
98 |
msgid "Are you sure you want to delete %1$s ?"
|
99 |
msgstr ""
|
100 |
|
101 |
+
msgid "Disable Switcher"
|
102 |
+
msgstr ""
|
103 |
+
|
104 |
+
msgid "Path"
|
105 |
+
msgstr ""
|
106 |
+
|
107 |
+
msgid "Regex mode"
|
108 |
+
msgstr ""
|
109 |
+
|
110 |
+
msgid "Enable Regex"
|
111 |
+
msgstr ""
|
112 |
+
|
113 |
msgid "Donationware"
|
114 |
msgstr ""
|
115 |
|
multi-device-switcher.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Multi Device Switcher
|
4 |
Plugin URI: https://github.com/thingsym/multi-device-switcher
|
5 |
Description: This WordPress plugin allows you to set a separate theme for device (Smart Phone, Tablet PC, Mobile Phone, Game and custom).
|
6 |
-
Version: 1.
|
7 |
Author: thingsym
|
8 |
Author URI: http://www.thingslabo.com/
|
9 |
License: GPL2
|
@@ -32,154 +32,162 @@ Domain Path: /languages/
|
|
32 |
class Multi_Device_Switcher {
|
33 |
|
34 |
public function __construct() {
|
35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
|
37 |
$userAgent = $this->get_options_userAgent();
|
38 |
-
$
|
39 |
-
$server_ua = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
|
40 |
|
41 |
-
foreach ( array_reverse($userAgent) as $key => $val ) {
|
42 |
-
if ( !preg_match(
|
43 |
continue;
|
44 |
-
|
|
|
45 |
$this->device = $key;
|
46 |
break;
|
47 |
}
|
48 |
}
|
49 |
|
50 |
-
if (
|
51 |
-
if ( $userAgent['game'] && preg_match( '/' . implode( '|', $userAgent['game'] ) . '/i', $server_ua) ) {
|
52 |
$this->device = 'game';
|
53 |
}
|
54 |
-
elseif ( $userAgent['tablet'] && preg_match( '/' . implode( '|', $userAgent['tablet'] ) . '/i', $server_ua) ) {
|
55 |
$this->device = 'tablet';
|
56 |
}
|
57 |
-
elseif ( $userAgent['smart'] && preg_match( '/' . implode( '|', $userAgent['smart'] ) . '/i', $server_ua) ) {
|
58 |
$this->device = 'smart';
|
59 |
}
|
60 |
-
elseif ( $userAgent['mobile'] && preg_match( '/' . implode( '|', $userAgent['mobile'] ) . '/i', $server_ua) ) {
|
61 |
$this->device = 'mobile';
|
62 |
}
|
63 |
}
|
64 |
|
65 |
-
if ($this->device) {
|
66 |
-
load_plugin_textdomain('multi-device-switcher', false, 'multi-device-switcher/languages');
|
67 |
-
add_filter('stylesheet', array(&$this, 'get_stylesheet'));
|
68 |
-
add_filter('template', array(&$this, 'get_template'));
|
69 |
-
add_action('wp_footer', array(&$this, 'add_pc_switcher'));
|
|
|
|
|
|
|
|
|
|
|
70 |
}
|
71 |
|
72 |
-
if ( isset($_COOKIE['pc-switcher']) ) {
|
73 |
-
remove_filter('stylesheet', array(&$this, 'get_stylesheet'));
|
74 |
-
remove_filter('template', array(&$this, 'get_template'));
|
75 |
}
|
76 |
}
|
77 |
|
78 |
public function get_options_userAgent() {
|
79 |
-
$options =
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
$options['userAgent_tablet'] = $default_options['userAgent_tablet'];
|
86 |
-
if ( !isset( $options['userAgent_mobile'] ) )
|
87 |
-
$options['userAgent_mobile'] = $default_options['userAgent_mobile'];
|
88 |
-
if ( !isset( $options['userAgent_game'] ) )
|
89 |
-
$options['userAgent_game'] = $default_options['userAgent_game'];
|
90 |
-
|
91 |
-
if ( $options['userAgent_smart'] )
|
92 |
-
$userAgent['smart'] = preg_split( "/,\s*/", $options['userAgent_smart'] );
|
93 |
-
if ( $options['userAgent_tablet'] )
|
94 |
-
$userAgent['tablet'] = preg_split( "/,\s*/", $options['userAgent_tablet'] );
|
95 |
-
if ( $options['userAgent_mobile'] )
|
96 |
-
$userAgent['mobile'] = preg_split( "/,\s*/", $options['userAgent_mobile'] );
|
97 |
-
if ( $options['userAgent_game'] )
|
98 |
-
$userAgent['game'] = preg_split( "/,\s*/", $options['userAgent_game'] );
|
99 |
|
100 |
foreach ( $options as $key => $val ) {
|
101 |
-
if ( !preg_match(
|
102 |
continue;
|
|
|
103 |
|
104 |
-
$custom_switcher_name = preg_replace(
|
105 |
-
|
106 |
-
if ($val)
|
107 |
-
$userAgent['custom_switcher_' . $custom_switcher_name] = preg_split( "/,\s*/", $val );
|
108 |
}
|
109 |
|
110 |
return $userAgent;
|
111 |
}
|
112 |
|
113 |
-
public function get_stylesheet($stylesheet = '') {
|
114 |
$name = $this->get_device_theme();
|
115 |
|
116 |
-
if ( empty($name) )
|
117 |
return $stylesheet;
|
|
|
118 |
|
119 |
$themes = wp_get_themes();
|
120 |
foreach ( $themes as $t ) {
|
121 |
-
if ( $name == $t->get('Name') ) {
|
122 |
$theme = $t;
|
123 |
break;
|
124 |
}
|
125 |
}
|
126 |
|
127 |
-
if ( empty($theme) )
|
128 |
return $stylesheet;
|
|
|
129 |
|
130 |
-
if ( $theme->get('Status')
|
131 |
return $stylesheet;
|
|
|
132 |
|
133 |
return $theme['Stylesheet'];
|
134 |
}
|
135 |
|
136 |
-
public function get_template($template = '') {
|
137 |
$name = $this->get_device_theme();
|
138 |
|
139 |
-
if ( empty($name) )
|
140 |
return $template;
|
|
|
141 |
|
142 |
$themes = wp_get_themes();
|
143 |
foreach ( $themes as $t ) {
|
144 |
-
if ( $name == $t->get('Name') ) {
|
145 |
$theme = $t;
|
146 |
break;
|
147 |
}
|
148 |
}
|
149 |
|
150 |
-
if ( empty( $theme ) )
|
151 |
return $template;
|
|
|
152 |
|
153 |
-
if ( $theme->get('Status')
|
154 |
return $template;
|
|
|
155 |
|
156 |
return $theme['Template'];
|
157 |
}
|
158 |
|
159 |
public function get_device_theme() {
|
160 |
-
$options =
|
161 |
|
162 |
-
if ($this->device
|
163 |
return $options['theme_smartphone'];
|
164 |
}
|
165 |
-
elseif ($this->device
|
166 |
return $options['theme_tablet'];
|
167 |
}
|
168 |
-
elseif ($this->device
|
169 |
return $options['theme_mobile'];
|
170 |
}
|
171 |
-
elseif ($this->device
|
172 |
return $options['theme_game'];
|
173 |
}
|
174 |
else {
|
175 |
foreach ( $options as $key => $val ) {
|
176 |
-
if ( !preg_match(
|
177 |
continue;
|
|
|
178 |
|
179 |
-
$custom_switcher_name = preg_replace(
|
180 |
|
181 |
-
if (
|
182 |
-
return $options[$key];
|
183 |
}
|
184 |
}
|
185 |
}
|
@@ -188,58 +196,86 @@ class Multi_Device_Switcher {
|
|
188 |
}
|
189 |
|
190 |
public function session() {
|
191 |
-
if ( isset($_GET['pc-switcher']) ) {
|
192 |
setcookie( 'pc-switcher', $_GET['pc-switcher'] ? 1 : '', null, '/' );
|
193 |
|
194 |
$uri = preg_replace( '/^(.+?)(\?.*)$/', '$1', $_SERVER['REQUEST_URI'] );
|
195 |
|
196 |
unset( $_GET['pc-switcher'] );
|
197 |
-
if ( !empty($_GET) )
|
198 |
-
$uri = $uri . '?' . http_build_query($_GET);
|
|
|
199 |
|
200 |
-
wp_redirect(
|
201 |
exit;
|
202 |
}
|
203 |
}
|
204 |
|
205 |
-
public function add_pc_switcher($pc_switcher = 0) {
|
206 |
-
$options =
|
207 |
$name = $this->get_device_theme();
|
208 |
|
209 |
-
if ($options['pc_switcher'])
|
210 |
$pc_switcher = 1;
|
|
|
211 |
|
212 |
-
if ( $pc_switcher && $name &&
|
213 |
-
if ($options['default_css'])
|
214 |
wp_enqueue_style( 'pc-switcher-options', plugins_url() . '/multi-device-switcher/pc-switcher.css', false, '2013-03-20' );
|
|
|
215 |
|
216 |
-
if ( isset($_COOKIE['pc-switcher']) ) {
|
217 |
-
$uri = add_query_arg( 'pc-switcher', 0 );
|
218 |
?>
|
219 |
-
<div class="pc-switcher"><a href="<?php echo $uri; ?>"><?php _e( 'Mobile', 'multi-device-switcher' ); ?></a><span class="active"><?php _e( 'PC', 'multi-device-switcher' ); ?></span></div>
|
220 |
<?php
|
221 |
}
|
222 |
else {
|
223 |
-
$uri = add_query_arg( 'pc-switcher', 1 );
|
224 |
?>
|
225 |
-
<div class="pc-switcher"><span class="active"><?php _e( 'Mobile', 'multi-device-switcher' ); ?></span><a href="<?php echo $uri; ?>"><?php _e( 'PC', 'multi-device-switcher' ); ?></a></div>
|
226 |
<?php
|
227 |
}
|
228 |
}
|
229 |
}
|
230 |
|
231 |
public function is_multi_device( $device = '' ) {
|
232 |
-
if ( $
|
233 |
return (boolean) 1;
|
234 |
-
|
|
|
235 |
return (boolean) 1;
|
|
|
236 |
|
237 |
return (boolean) 0;
|
238 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
239 |
}
|
240 |
|
241 |
-
if ( !is_admin() )
|
242 |
$multi_device_switcher = new Multi_Device_Switcher();
|
|
|
243 |
|
244 |
/**
|
245 |
* Add HTTP/1.1 Vary header.
|
@@ -248,7 +284,7 @@ if ( !is_admin() )
|
|
248 |
*
|
249 |
*/
|
250 |
function multi_device_switcher_add_header_vary( $headers ) {
|
251 |
-
if ( !is_admin() ) {
|
252 |
$headers['Vary'] = 'User-Agent';
|
253 |
return $headers;
|
254 |
}
|
@@ -263,7 +299,7 @@ add_filter( 'wp_headers', 'multi_device_switcher_add_header_vary' );
|
|
263 |
*/
|
264 |
function multi_device_switcher_add_pc_switcher() {
|
265 |
global $multi_device_switcher;
|
266 |
-
$multi_device_switcher->add_pc_switcher(1);
|
267 |
}
|
268 |
|
269 |
/**
|
@@ -272,11 +308,11 @@ function multi_device_switcher_add_pc_switcher() {
|
|
272 |
* @since 1.2.4
|
273 |
*
|
274 |
*/
|
275 |
-
if ( !function_exists( 'is_multi_device' ) ) :
|
276 |
|
277 |
function is_multi_device( $device = '' ) {
|
278 |
global $multi_device_switcher;
|
279 |
-
return $multi_device_switcher->is_multi_device($device);
|
280 |
}
|
281 |
endif;
|
282 |
|
@@ -317,8 +353,9 @@ function multi_device_switcher_admin_enqueue_styles( $hook_suffix ) {
|
|
317 |
*/
|
318 |
function multi_device_switcher_init() {
|
319 |
// If we have no options in the database, let's add them now.
|
320 |
-
if ( false === multi_device_switcher_get_options() )
|
321 |
add_option( 'multi_device_switcher_options' );
|
|
|
322 |
|
323 |
register_setting(
|
324 |
'multi_device_switcher', // Options group, see settings_fields() call in multi_device_switcher_render_page()
|
@@ -355,7 +392,7 @@ add_filter( 'option_page_capability_multi_device_switcher', 'multi_device_switch
|
|
355 |
* @since 1.0
|
356 |
*/
|
357 |
function multi_device_switcher_add_page() {
|
358 |
-
load_plugin_textdomain('multi-device-switcher', false, 'multi-device-switcher/languages');
|
359 |
|
360 |
add_filter( 'plugin_action_links', 'multi_device_switcher_plugin_action_links', 10, 2 );
|
361 |
|
@@ -367,8 +404,9 @@ function multi_device_switcher_add_page() {
|
|
367 |
'multi_device_switcher_render_page' // Function that renders the options page
|
368 |
);
|
369 |
|
370 |
-
if (
|
371 |
return;
|
|
|
372 |
|
373 |
add_action( 'load-' . $page_hook , 'multi_device_switcher_page_hook_suffix' );
|
374 |
}
|
@@ -392,8 +430,9 @@ function multi_device_switcher_page_hook_suffix() {
|
|
392 |
* @since 1.2
|
393 |
*/
|
394 |
function multi_device_switcher_plugin_action_links( $links, $file ) {
|
395 |
-
if ( $file != plugin_basename( __FILE__ ))
|
396 |
return $links;
|
|
|
397 |
|
398 |
$settings_link = '<a href="themes.php?page=multi-device-switcher">' . __( 'Settings', 'multi-device-switcher' ) . '</a>';
|
399 |
|
@@ -419,6 +458,8 @@ function multi_device_switcher_get_default_options() {
|
|
419 |
'userAgent_tablet' => 'iPad, Kindle, Sony Tablet, Nexus 7',
|
420 |
'userAgent_mobile' => 'DoCoMo, SoftBank, J-PHONE, Vodafone, KDDI, UP.Browser, WILLCOM, emobile, DDIPOCKET, Windows CE, BlackBerry, Symbian, PalmOS, Huawei, IAC, Nokia',
|
421 |
'userAgent_game' => 'PlayStation Portable, PlayStation Vita, PSP, PS2, PLAYSTATION 3, PlayStation 4, Nitro, Nintendo 3DS, Nintendo Wii, Nintendo WiiU, Xbox',
|
|
|
|
|
422 |
);
|
423 |
|
424 |
return $default_theme_options;
|
@@ -433,28 +474,45 @@ function multi_device_switcher_get_options() {
|
|
433 |
$options = get_option( 'multi_device_switcher_options' );
|
434 |
$default_options = multi_device_switcher_get_default_options();
|
435 |
|
436 |
-
if ( !isset( $options['pc_switcher'] ) )
|
437 |
$options['pc_switcher'] = $default_options['pc_switcher'];
|
438 |
-
|
|
|
439 |
$options['default_css'] = $default_options['default_css'];
|
|
|
440 |
|
441 |
-
if ( !isset( $options['theme_smartphone'] ) )
|
442 |
$options['theme_smartphone'] = $default_options['theme_smartphone'];
|
443 |
-
|
|
|
444 |
$options['theme_tablet'] = $default_options['theme_tablet'];
|
445 |
-
|
|
|
446 |
$options['theme_mobile'] = $default_options['theme_mobile'];
|
447 |
-
|
|
|
448 |
$options['theme_game'] = $default_options['theme_game'];
|
|
|
449 |
|
450 |
-
if ( !isset( $options['userAgent_smart'] ) )
|
451 |
$options['userAgent_smart'] = $default_options['userAgent_smart'];
|
452 |
-
|
|
|
453 |
$options['userAgent_tablet'] = $default_options['userAgent_tablet'];
|
454 |
-
|
|
|
455 |
$options['userAgent_mobile'] = $default_options['userAgent_mobile'];
|
456 |
-
|
|
|
457 |
$options['userAgent_game'] = $default_options['userAgent_game'];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
458 |
|
459 |
return $options;
|
460 |
}
|
@@ -468,7 +526,7 @@ function multi_device_switcher_render_page() {
|
|
468 |
?>
|
469 |
<div class="wrap">
|
470 |
<div id="icon-themes" class="icon32"><br></div>
|
471 |
-
<h2><?php printf( __( 'Multi Device Switcher', 'multi-device-switcher' ), wp_get_theme()->get('Name') ); ?></h2>
|
472 |
<?php settings_errors(); ?>
|
473 |
|
474 |
<form method="post" action="options.php">
|
@@ -476,15 +534,15 @@ function multi_device_switcher_render_page() {
|
|
476 |
settings_fields( 'multi_device_switcher' );
|
477 |
$options = multi_device_switcher_get_options();
|
478 |
|
479 |
-
$default_theme = wp_get_theme()->get('Name');
|
480 |
$themes = wp_get_themes();
|
481 |
$theme_names = array();
|
482 |
|
483 |
-
if ( count($themes) ) {
|
484 |
foreach ( $themes as $t ) {
|
485 |
-
$theme_names[] = $t->get('Name');
|
486 |
}
|
487 |
-
natcasesort($theme_names);
|
488 |
}
|
489 |
?>
|
490 |
|
@@ -496,10 +554,10 @@ function multi_device_switcher_render_page() {
|
|
496 |
<td>
|
497 |
|
498 |
<?php
|
499 |
-
if ( count($theme_names) ) {
|
500 |
$html = '<select name="multi_device_switcher_options[theme_smartphone]">';
|
501 |
|
502 |
-
if ( ($options['theme_smartphone']
|
503 |
$html .= '<option value="None" selected="selected">' . __( 'None', 'multi-device-switcher' ) . '</option>';
|
504 |
}
|
505 |
else {
|
@@ -507,13 +565,14 @@ function multi_device_switcher_render_page() {
|
|
507 |
}
|
508 |
|
509 |
foreach ( $theme_names as $theme_name ) {
|
510 |
-
if ( $default_theme == $theme_name )
|
511 |
continue;
|
|
|
512 |
if ( $options['theme_smartphone'] == $theme_name ) {
|
513 |
-
$html .= '<option value="' . $theme_name . '" selected="selected">' .
|
514 |
}
|
515 |
else {
|
516 |
-
$html .= '<option value="' . $theme_name . '">' .
|
517 |
}
|
518 |
}
|
519 |
$html .= '</select>';
|
@@ -526,10 +585,10 @@ function multi_device_switcher_render_page() {
|
|
526 |
<td>
|
527 |
|
528 |
<?php
|
529 |
-
if ( count($theme_names) ) {
|
530 |
$html = '<select name="multi_device_switcher_options[theme_tablet]">';
|
531 |
|
532 |
-
if ( ($options['theme_tablet']
|
533 |
$html .= '<option value="None" selected="selected">' . __( 'None', 'multi-device-switcher' ) . '</option>';
|
534 |
}
|
535 |
else {
|
@@ -537,13 +596,14 @@ function multi_device_switcher_render_page() {
|
|
537 |
}
|
538 |
|
539 |
foreach ( $theme_names as $theme_name ) {
|
540 |
-
if ( $default_theme == $theme_name )
|
541 |
continue;
|
|
|
542 |
if ( $options['theme_tablet'] == $theme_name ) {
|
543 |
-
$html .= '<option value="' . $theme_name . '" selected="selected">' .
|
544 |
}
|
545 |
else {
|
546 |
-
$html .= '<option value="' . $theme_name . '">' .
|
547 |
}
|
548 |
}
|
549 |
$html .= '</select>';
|
@@ -556,10 +616,10 @@ function multi_device_switcher_render_page() {
|
|
556 |
<td>
|
557 |
|
558 |
<?php
|
559 |
-
if ( count($theme_names) ) {
|
560 |
$html = '<select name="multi_device_switcher_options[theme_mobile]">';
|
561 |
|
562 |
-
if ( ($options['theme_mobile']
|
563 |
$html .= '<option value="None" selected="selected">' . __( 'None', 'multi-device-switcher' ) . '</option>';
|
564 |
}
|
565 |
else {
|
@@ -567,13 +627,14 @@ function multi_device_switcher_render_page() {
|
|
567 |
}
|
568 |
|
569 |
foreach ( $theme_names as $theme_name ) {
|
570 |
-
if ( $default_theme == $theme_name )
|
571 |
continue;
|
|
|
572 |
if ( $options['theme_mobile'] == $theme_name ) {
|
573 |
-
$html .= '<option value="' . $theme_name . '" selected="selected">' .
|
574 |
}
|
575 |
else {
|
576 |
-
$html .= '<option value="' . $theme_name . '">' .
|
577 |
}
|
578 |
}
|
579 |
$html .= '</select>';
|
@@ -586,10 +647,10 @@ function multi_device_switcher_render_page() {
|
|
586 |
<td>
|
587 |
|
588 |
<?php
|
589 |
-
if ( count($theme_names) ) {
|
590 |
$html = '<select name="multi_device_switcher_options[theme_game]">';
|
591 |
|
592 |
-
if ( ($options['theme_game']
|
593 |
$html .= '<option value="None" selected="selected">' . __( 'None', 'multi-device-switcher' ) . '</option>';
|
594 |
}
|
595 |
else {
|
@@ -597,13 +658,14 @@ function multi_device_switcher_render_page() {
|
|
597 |
}
|
598 |
|
599 |
foreach ( $theme_names as $theme_name ) {
|
600 |
-
if ( $default_theme == $theme_name )
|
601 |
continue;
|
|
|
602 |
if ( $options['theme_game'] == $theme_name ) {
|
603 |
-
$html .= '<option value="' . $theme_name . '" selected="selected">' .
|
604 |
}
|
605 |
else {
|
606 |
-
$html .= '<option value="' . $theme_name . '">' .
|
607 |
}
|
608 |
}
|
609 |
$html .= '</select>';
|
@@ -618,23 +680,22 @@ function multi_device_switcher_render_page() {
|
|
618 |
<table class="form-table">
|
619 |
|
620 |
<?php
|
621 |
-
foreach ( $options as $
|
622 |
-
if ( !preg_match(
|
623 |
continue;
|
|
|
624 |
|
625 |
-
$custom_switcher_name = preg_replace(
|
626 |
-
$custom_switcher_option = $key;
|
627 |
-
$custom_switcher_theme = $val;
|
628 |
?>
|
629 |
|
630 |
-
<tr><th scope="row"><?php
|
631 |
<td>
|
632 |
|
633 |
<?php
|
634 |
-
if ( count($theme_names) ) {
|
635 |
$html = '<select name="multi_device_switcher_options[' . $custom_switcher_option . ']">';
|
636 |
|
637 |
-
if ( (
|
638 |
$html .= '<option value="None" selected="selected">' . __( 'None', 'multi-device-switcher' ) . '</option>';
|
639 |
}
|
640 |
else {
|
@@ -642,17 +703,18 @@ function multi_device_switcher_render_page() {
|
|
642 |
}
|
643 |
|
644 |
foreach ( $theme_names as $theme_name ) {
|
645 |
-
if ( $default_theme == $theme_name )
|
646 |
continue;
|
|
|
647 |
if ( $custom_switcher_theme == $theme_name ) {
|
648 |
-
$html .= '<option value="' . $theme_name . '" selected="selected">' .
|
649 |
}
|
650 |
else {
|
651 |
-
$html .= '<option value="' . $theme_name . '">' .
|
652 |
}
|
653 |
}
|
654 |
$html .= '</select>';
|
655 |
-
$html .= ' <span class="submit"><input type="submit" name="multi_device_switcher_options[delete_custom_switcher_' . $custom_switcher_name . ']" value="' . __( 'Delete', 'multi-device-switcher' ) . '" onclick="return confirm(\'' . sprintf( __( 'Are you sure you want to delete %1$s ?', 'multi-device-switcher' ), $custom_switcher_name ) . '\');" class="button"></span>';
|
656 |
}
|
657 |
echo $html;
|
658 |
?>
|
@@ -681,16 +743,16 @@ function multi_device_switcher_render_page() {
|
|
681 |
|
682 |
<table class="form-table">
|
683 |
<tr><th scope="row"><?php _e( 'Smart Phone', 'multi-device-switcher' ); ?></th>
|
684 |
-
<td><textarea name="multi_device_switcher_options[userAgent_smart]" rows="4" cols="42"><?php echo $options['userAgent_smart']; ?></textarea></td>
|
685 |
</tr>
|
686 |
<tr><th scope="row"><?php _e( 'Tablet PC', 'multi-device-switcher' ); ?></th>
|
687 |
-
<td><textarea name="multi_device_switcher_options[userAgent_tablet]" rows="4" cols="42"><?php echo $options['userAgent_tablet']; ?></textarea></td>
|
688 |
</tr>
|
689 |
<tr><th scope="row"><?php _e( 'Mobile Phone', 'multi-device-switcher' ); ?></th>
|
690 |
-
<td><textarea name="multi_device_switcher_options[userAgent_mobile]" rows="4" cols="42"><?php echo $options['userAgent_mobile']; ?></textarea></td>
|
691 |
</tr>
|
692 |
<tr><th scope="row"><?php _e( 'Game Platforms', 'multi-device-switcher' ); ?></th>
|
693 |
-
<td><textarea name="multi_device_switcher_options[userAgent_game]" rows="4" cols="42"><?php echo $options['userAgent_game']; ?></textarea></td>
|
694 |
</tr>
|
695 |
<tr><th></th>
|
696 |
<td><span class="submit"><input type="submit" name="multi_device_switcher_options[restore_UserAgent]" value="<?php _e( 'Reset Settings to Default UserAgent', 'multi-device-switcher' ); ?>" class="button"></span></td>
|
@@ -701,17 +763,16 @@ function multi_device_switcher_render_page() {
|
|
701 |
<h3><?php _e( 'Custom Switcher UserAgent', 'multi-device-switcher' ); ?></h3>
|
702 |
<table class="form-table">
|
703 |
<?php
|
704 |
-
foreach ( $options as $
|
705 |
-
if ( !preg_match(
|
706 |
continue;
|
|
|
707 |
|
708 |
-
$custom_switcher_name = preg_replace(
|
709 |
-
$custom_switcher_option = $key;
|
710 |
-
$custom_switcher_userAgent = $val;
|
711 |
?>
|
712 |
|
713 |
-
<tr><th scope="row"><?php
|
714 |
-
<td><textarea name="multi_device_switcher_options[<?php echo $custom_switcher_option; ?>]" rows="4" cols="42"><?php echo $custom_switcher_userAgent; ?></textarea></td>
|
715 |
</tr>
|
716 |
<?php
|
717 |
}
|
@@ -727,13 +788,33 @@ function multi_device_switcher_render_page() {
|
|
727 |
<tr><th scope="row"><?php _e( 'Add PC Switcher', 'multi-device-switcher' ); ?></th>
|
728 |
<td>
|
729 |
<legend class="screen-reader-text"><span><?php _e( 'Add PC Switcher', 'multi-device-switcher' ); ?></span></legend>
|
730 |
-
<label><input type="checkbox" name="multi_device_switcher_options[pc_switcher]" id="pc-switcher" value="1"<?php checked(1, $options['pc_switcher']); ?>> <?php _e( 'Add a PC Switcher to the footer.', 'multi-device-switcher' ); ?></label>
|
731 |
</td>
|
732 |
</tr>
|
733 |
<tr><th scope="row"><?php _e( 'Add default CSS', 'multi-device-switcher' ); ?></th>
|
734 |
<td>
|
735 |
<legend class="screen-reader-text"><span><?php _e( 'Add default CSS', 'multi-device-switcher' ); ?></span></legend>
|
736 |
-
<label><input type="checkbox" name="multi_device_switcher_options[default_css]" id="add-default-css" value="1"<?php checked(1, $options['default_css']); ?>> <?php _e( 'Add a default CSS.', 'multi-device-switcher' ); ?></label>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
737 |
</td>
|
738 |
</tr>
|
739 |
</table>
|
@@ -783,72 +864,182 @@ function multi_device_switcher_render_page() {
|
|
783 |
function multi_device_switcher_validate( $input ) {
|
784 |
$output = $default_options = multi_device_switcher_get_default_options();
|
785 |
|
786 |
-
if ( isset( $input['theme_smartphone'] ) )
|
787 |
$output['theme_smartphone'] = $input['theme_smartphone'];
|
788 |
-
|
|
|
789 |
$output['theme_tablet'] = $input['theme_tablet'];
|
790 |
-
|
|
|
791 |
$output['theme_mobile'] = $input['theme_mobile'];
|
792 |
-
|
|
|
793 |
$output['theme_game'] = $input['theme_game'];
|
|
|
794 |
|
795 |
-
if (isset( $input['restore_UserAgent'] )) {
|
796 |
$output['userAgent_smart'] = $default_options['userAgent_smart'];
|
797 |
$output['userAgent_tablet'] = $default_options['userAgent_tablet'];
|
798 |
$output['userAgent_mobile'] = $default_options['userAgent_mobile'];
|
799 |
$output['userAgent_game'] = $default_options['userAgent_game'];
|
800 |
}
|
801 |
else {
|
802 |
-
if ( isset( $input['userAgent_smart'] ) )
|
803 |
$output['userAgent_smart'] = $input['userAgent_smart'];
|
804 |
-
|
|
|
805 |
$output['userAgent_tablet'] = $input['userAgent_tablet'];
|
806 |
-
|
|
|
807 |
$output['userAgent_mobile'] = $input['userAgent_mobile'];
|
808 |
-
|
|
|
809 |
$output['userAgent_game'] = $input['userAgent_game'];
|
|
|
810 |
}
|
811 |
|
812 |
foreach ( $input as $key => $val ) {
|
813 |
-
if ( !preg_match(
|
814 |
continue;
|
|
|
815 |
|
816 |
-
$custom_switcher_name = preg_replace(
|
817 |
|
818 |
-
if ( isset( $input['custom_switcher_theme_' . $custom_switcher_name] ) )
|
819 |
-
$output['custom_switcher_theme_' . $custom_switcher_name] = $input['custom_switcher_theme_' . $custom_switcher_name];
|
820 |
-
|
821 |
-
|
|
|
|
|
822 |
}
|
823 |
|
824 |
foreach ( $input as $key => $val ) {
|
825 |
-
if ( !preg_match(
|
826 |
continue;
|
|
|
827 |
|
828 |
-
$custom_switcher_name = preg_replace(
|
829 |
|
830 |
-
unset($output['custom_switcher_theme_' . $custom_switcher_name]);
|
831 |
-
unset($output['custom_switcher_userAgent_' . $custom_switcher_name]);
|
832 |
}
|
833 |
|
834 |
-
if ( isset( $input['add_custom_switcher'] ) && !empty( $input['custom_switcher'] ) &&
|
835 |
-
if (
|
836 |
-
|
837 |
-
$output['
|
|
|
838 |
}
|
839 |
}
|
840 |
|
841 |
-
$output['pc_switcher'] = isset($input['pc_switcher']) ? $input['pc_switcher'] : 0;
|
842 |
-
$output['default_css'] = isset($input['default_css']) ? $input['default_css'] : 0;
|
|
|
|
|
|
|
843 |
|
844 |
return apply_filters( 'multi_device_switcher_validate', $output, $input, $default_options );
|
845 |
}
|
846 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
847 |
/**
|
848 |
* include PC Switcher Widget.
|
849 |
*
|
850 |
* @since 1.2
|
851 |
*/
|
852 |
-
require_once( dirname(__FILE__) . '/pc-switcher-widget.php' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
853 |
|
854 |
?>
|
3 |
Plugin Name: Multi Device Switcher
|
4 |
Plugin URI: https://github.com/thingsym/multi-device-switcher
|
5 |
Description: This WordPress plugin allows you to set a separate theme for device (Smart Phone, Tablet PC, Mobile Phone, Game and custom).
|
6 |
+
Version: 1.4.0
|
7 |
Author: thingsym
|
8 |
Author URI: http://www.thingslabo.com/
|
9 |
License: GPL2
|
32 |
class Multi_Device_Switcher {
|
33 |
|
34 |
public function __construct() {
|
35 |
+
$this->device = '';
|
36 |
+
|
37 |
+
if ( isset( $_COOKIE['disable-switcher'] ) ) {
|
38 |
+
setcookie( 'disable-switcher', null, time() - 3600, '/' );
|
39 |
+
}
|
40 |
+
|
41 |
+
if ( $this->get_disable() ) {
|
42 |
+
setcookie( 'disable-switcher', 1, null, '/' );
|
43 |
+
return;
|
44 |
+
}
|
45 |
+
|
46 |
+
add_action( 'init', array( &$this, 'session' ) );
|
47 |
|
48 |
$userAgent = $this->get_options_userAgent();
|
49 |
+
$server_ua = isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : '';
|
|
|
50 |
|
51 |
+
foreach ( array_reverse( $userAgent ) as $key => $val ) {
|
52 |
+
if ( ! preg_match( '/^custom_switcher_/', $key ) ) {
|
53 |
continue;
|
54 |
+
}
|
55 |
+
if ( $userAgent[ $key ] && preg_match( '/' . implode( '|', $userAgent[ $key ] ) . '/i', $server_ua ) ) {
|
56 |
$this->device = $key;
|
57 |
break;
|
58 |
}
|
59 |
}
|
60 |
|
61 |
+
if ( ! $this->device ) {
|
62 |
+
if ( $userAgent['game'] && preg_match( '/' . implode( '|', $userAgent['game'] ) . '/i', $server_ua ) ) {
|
63 |
$this->device = 'game';
|
64 |
}
|
65 |
+
elseif ( $userAgent['tablet'] && preg_match( '/' . implode( '|', $userAgent['tablet'] ) . '/i', $server_ua ) ) {
|
66 |
$this->device = 'tablet';
|
67 |
}
|
68 |
+
elseif ( $userAgent['smart'] && preg_match( '/' . implode( '|', $userAgent['smart'] ) . '/i', $server_ua ) ) {
|
69 |
$this->device = 'smart';
|
70 |
}
|
71 |
+
elseif ( $userAgent['mobile'] && preg_match( '/' . implode( '|', $userAgent['mobile'] ) . '/i', $server_ua ) ) {
|
72 |
$this->device = 'mobile';
|
73 |
}
|
74 |
}
|
75 |
|
76 |
+
if ( $this->device ) {
|
77 |
+
load_plugin_textdomain( 'multi-device-switcher', false, 'multi-device-switcher/languages' );
|
78 |
+
add_filter( 'stylesheet', array( &$this, 'get_stylesheet' ) );
|
79 |
+
add_filter( 'template', array( &$this, 'get_template' ) );
|
80 |
+
add_action( 'wp_footer', array( &$this, 'add_pc_switcher' ) );
|
81 |
+
|
82 |
+
setcookie( 'multi-device-switcher', preg_replace( '/^custom_switcher_/', '', $this->device ), null, '/' );
|
83 |
+
}
|
84 |
+
else {
|
85 |
+
setcookie( 'multi-device-switcher', null, time() - 3600, '/' );
|
86 |
}
|
87 |
|
88 |
+
if ( isset( $_COOKIE['pc-switcher'] ) ) {
|
89 |
+
remove_filter( 'stylesheet', array( &$this, 'get_stylesheet' ) );
|
90 |
+
remove_filter( 'template', array( &$this, 'get_template' ) );
|
91 |
}
|
92 |
}
|
93 |
|
94 |
public function get_options_userAgent() {
|
95 |
+
$options = multi_device_switcher_get_options();
|
96 |
+
|
97 |
+
$userAgent['smart'] = empty( $options['userAgent_smart'] ) ? '' : preg_split( '/,\s*/', $options['userAgent_smart'] );
|
98 |
+
$userAgent['tablet'] = empty( $options['userAgent_tablet'] ) ? '' : preg_split( '/,\s*/', $options['userAgent_tablet'] );
|
99 |
+
$userAgent['mobile'] = empty( $options['userAgent_mobile'] ) ? '' : preg_split( '/,\s*/', $options['userAgent_mobile'] );
|
100 |
+
$userAgent['game'] = empty( $options['userAgent_game'] ) ? '' : preg_split( '/,\s*/', $options['userAgent_game'] );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
|
102 |
foreach ( $options as $key => $val ) {
|
103 |
+
if ( ! preg_match( '/^custom_switcher_userAgent_/', $key ) ) {
|
104 |
continue;
|
105 |
+
}
|
106 |
|
107 |
+
$custom_switcher_name = preg_replace( '/^custom_switcher_userAgent_/', '', $key );
|
108 |
+
$userAgent[ 'custom_switcher_' . $custom_switcher_name ] = empty( $val ) ? '' : preg_split( '/,\s*/', $val );
|
|
|
|
|
109 |
}
|
110 |
|
111 |
return $userAgent;
|
112 |
}
|
113 |
|
114 |
+
public function get_stylesheet( $stylesheet = '' ) {
|
115 |
$name = $this->get_device_theme();
|
116 |
|
117 |
+
if ( empty( $name ) ) {
|
118 |
return $stylesheet;
|
119 |
+
}
|
120 |
|
121 |
$themes = wp_get_themes();
|
122 |
foreach ( $themes as $t ) {
|
123 |
+
if ( $name == $t->get( 'Name' ) ) {
|
124 |
$theme = $t;
|
125 |
break;
|
126 |
}
|
127 |
}
|
128 |
|
129 |
+
if ( empty( $theme ) ) {
|
130 |
return $stylesheet;
|
131 |
+
}
|
132 |
|
133 |
+
if ( 'publish' != $theme->get( 'Status' ) ) {
|
134 |
return $stylesheet;
|
135 |
+
}
|
136 |
|
137 |
return $theme['Stylesheet'];
|
138 |
}
|
139 |
|
140 |
+
public function get_template( $template = '' ) {
|
141 |
$name = $this->get_device_theme();
|
142 |
|
143 |
+
if ( empty( $name ) ) {
|
144 |
return $template;
|
145 |
+
}
|
146 |
|
147 |
$themes = wp_get_themes();
|
148 |
foreach ( $themes as $t ) {
|
149 |
+
if ( $name == $t->get( 'Name' ) ) {
|
150 |
$theme = $t;
|
151 |
break;
|
152 |
}
|
153 |
}
|
154 |
|
155 |
+
if ( empty( $theme ) ) {
|
156 |
return $template;
|
157 |
+
}
|
158 |
|
159 |
+
if ( 'publish' != $theme->get( 'Status' ) ) {
|
160 |
return $template;
|
161 |
+
}
|
162 |
|
163 |
return $theme['Template'];
|
164 |
}
|
165 |
|
166 |
public function get_device_theme() {
|
167 |
+
$options = multi_device_switcher_get_options();
|
168 |
|
169 |
+
if ( 'smart' == $this->device ) {
|
170 |
return $options['theme_smartphone'];
|
171 |
}
|
172 |
+
elseif ( 'tablet' == $this->device ) {
|
173 |
return $options['theme_tablet'];
|
174 |
}
|
175 |
+
elseif ( 'mobile' == $this->device ) {
|
176 |
return $options['theme_mobile'];
|
177 |
}
|
178 |
+
elseif ( 'game' == $this->device ) {
|
179 |
return $options['theme_game'];
|
180 |
}
|
181 |
else {
|
182 |
foreach ( $options as $key => $val ) {
|
183 |
+
if ( ! preg_match( '/^custom_switcher_theme_/', $key ) ) {
|
184 |
continue;
|
185 |
+
}
|
186 |
|
187 |
+
$custom_switcher_name = preg_replace( '/^custom_switcher_theme_/', '', $key );
|
188 |
|
189 |
+
if ( 'custom_switcher_' . $custom_switcher_name == $this->device ) {
|
190 |
+
return $options[ $key ];
|
191 |
}
|
192 |
}
|
193 |
}
|
196 |
}
|
197 |
|
198 |
public function session() {
|
199 |
+
if ( isset( $_GET['pc-switcher'] ) ) {
|
200 |
setcookie( 'pc-switcher', $_GET['pc-switcher'] ? 1 : '', null, '/' );
|
201 |
|
202 |
$uri = preg_replace( '/^(.+?)(\?.*)$/', '$1', $_SERVER['REQUEST_URI'] );
|
203 |
|
204 |
unset( $_GET['pc-switcher'] );
|
205 |
+
if ( ! empty( $_GET ) ) {
|
206 |
+
$uri = $uri . '?' . http_build_query( $_GET );
|
207 |
+
}
|
208 |
|
209 |
+
wp_redirect( esc_url( $uri ) );
|
210 |
exit;
|
211 |
}
|
212 |
}
|
213 |
|
214 |
+
public function add_pc_switcher( $pc_switcher = 0 ) {
|
215 |
+
$options = multi_device_switcher_get_options();
|
216 |
$name = $this->get_device_theme();
|
217 |
|
218 |
+
if ( $options['pc_switcher'] ) {
|
219 |
$pc_switcher = 1;
|
220 |
+
}
|
221 |
|
222 |
+
if ( $pc_switcher && $name && 'None' != $name ) {
|
223 |
+
if ( $options['default_css'] ) {
|
224 |
wp_enqueue_style( 'pc-switcher-options', plugins_url() . '/multi-device-switcher/pc-switcher.css', false, '2013-03-20' );
|
225 |
+
}
|
226 |
|
227 |
+
if ( isset( $_COOKIE['pc-switcher'] ) ) {
|
228 |
+
$uri = get_home_url() . add_query_arg( 'pc-switcher', 0 );
|
229 |
?>
|
230 |
+
<div class="pc-switcher"><a href="<?php echo esc_url( $uri ); ?>"><?php _e( 'Mobile', 'multi-device-switcher' ); ?></a><span class="active"><?php _e( 'PC', 'multi-device-switcher' ); ?></span></div>
|
231 |
<?php
|
232 |
}
|
233 |
else {
|
234 |
+
$uri = get_home_url() . add_query_arg( 'pc-switcher', 1 );
|
235 |
?>
|
236 |
+
<div class="pc-switcher"><span class="active"><?php _e( 'Mobile', 'multi-device-switcher' ); ?></span><a href="<?php echo esc_url( $uri ); ?>"><?php _e( 'PC', 'multi-device-switcher' ); ?></a></div>
|
237 |
<?php
|
238 |
}
|
239 |
}
|
240 |
}
|
241 |
|
242 |
public function is_multi_device( $device = '' ) {
|
243 |
+
if ( $device == $this->device ) {
|
244 |
return (boolean) 1;
|
245 |
+
}
|
246 |
+
if ( 'custom_switcher_' . $device == $this->device ) {
|
247 |
return (boolean) 1;
|
248 |
+
}
|
249 |
|
250 |
return (boolean) 0;
|
251 |
}
|
252 |
+
|
253 |
+
public function get_disable( $disable = 0 ) {
|
254 |
+
$options = multi_device_switcher_get_options();
|
255 |
+
$disable_path = preg_split( '/\R/', $options['disable_path'], -1, PREG_SPLIT_NO_EMPTY );
|
256 |
+
|
257 |
+
foreach ( $disable_path as $path ) {
|
258 |
+
if ( $options['enable_regex'] ) {
|
259 |
+
if ( preg_match( '/' . $path . '/i', $_SERVER['REQUEST_URI'] ) ) {
|
260 |
+
$disable = 1;
|
261 |
+
break;
|
262 |
+
}
|
263 |
+
}
|
264 |
+
else {
|
265 |
+
if ( preg_match( '/^' . preg_quote( $path , '/' ) . '$/i', $_SERVER['REQUEST_URI'] ) ) {
|
266 |
+
$disable = 1;
|
267 |
+
break;
|
268 |
+
}
|
269 |
+
}
|
270 |
+
}
|
271 |
+
|
272 |
+
return (boolean) $disable;
|
273 |
+
}
|
274 |
}
|
275 |
|
276 |
+
if ( ! is_admin() ) {
|
277 |
$multi_device_switcher = new Multi_Device_Switcher();
|
278 |
+
}
|
279 |
|
280 |
/**
|
281 |
* Add HTTP/1.1 Vary header.
|
284 |
*
|
285 |
*/
|
286 |
function multi_device_switcher_add_header_vary( $headers ) {
|
287 |
+
if ( ! is_admin() ) {
|
288 |
$headers['Vary'] = 'User-Agent';
|
289 |
return $headers;
|
290 |
}
|
299 |
*/
|
300 |
function multi_device_switcher_add_pc_switcher() {
|
301 |
global $multi_device_switcher;
|
302 |
+
$multi_device_switcher->add_pc_switcher( 1 );
|
303 |
}
|
304 |
|
305 |
/**
|
308 |
* @since 1.2.4
|
309 |
*
|
310 |
*/
|
311 |
+
if ( ! function_exists( 'is_multi_device' ) ) :
|
312 |
|
313 |
function is_multi_device( $device = '' ) {
|
314 |
global $multi_device_switcher;
|
315 |
+
return $multi_device_switcher->is_multi_device( $device );
|
316 |
}
|
317 |
endif;
|
318 |
|
353 |
*/
|
354 |
function multi_device_switcher_init() {
|
355 |
// If we have no options in the database, let's add them now.
|
356 |
+
if ( false === multi_device_switcher_get_options() ) {
|
357 |
add_option( 'multi_device_switcher_options' );
|
358 |
+
}
|
359 |
|
360 |
register_setting(
|
361 |
'multi_device_switcher', // Options group, see settings_fields() call in multi_device_switcher_render_page()
|
392 |
* @since 1.0
|
393 |
*/
|
394 |
function multi_device_switcher_add_page() {
|
395 |
+
load_plugin_textdomain( 'multi-device-switcher', false, 'multi-device-switcher/languages' );
|
396 |
|
397 |
add_filter( 'plugin_action_links', 'multi_device_switcher_plugin_action_links', 10, 2 );
|
398 |
|
404 |
'multi_device_switcher_render_page' // Function that renders the options page
|
405 |
);
|
406 |
|
407 |
+
if ( ! $page_hook ) {
|
408 |
return;
|
409 |
+
}
|
410 |
|
411 |
add_action( 'load-' . $page_hook , 'multi_device_switcher_page_hook_suffix' );
|
412 |
}
|
430 |
* @since 1.2
|
431 |
*/
|
432 |
function multi_device_switcher_plugin_action_links( $links, $file ) {
|
433 |
+
if ( $file != plugin_basename( __FILE__ ) ) {
|
434 |
return $links;
|
435 |
+
}
|
436 |
|
437 |
$settings_link = '<a href="themes.php?page=multi-device-switcher">' . __( 'Settings', 'multi-device-switcher' ) . '</a>';
|
438 |
|
458 |
'userAgent_tablet' => 'iPad, Kindle, Sony Tablet, Nexus 7',
|
459 |
'userAgent_mobile' => 'DoCoMo, SoftBank, J-PHONE, Vodafone, KDDI, UP.Browser, WILLCOM, emobile, DDIPOCKET, Windows CE, BlackBerry, Symbian, PalmOS, Huawei, IAC, Nokia',
|
460 |
'userAgent_game' => 'PlayStation Portable, PlayStation Vita, PSP, PS2, PLAYSTATION 3, PlayStation 4, Nitro, Nintendo 3DS, Nintendo Wii, Nintendo WiiU, Xbox',
|
461 |
+
'disable_path' => '',
|
462 |
+
'enable_regex' => 0,
|
463 |
);
|
464 |
|
465 |
return $default_theme_options;
|
474 |
$options = get_option( 'multi_device_switcher_options' );
|
475 |
$default_options = multi_device_switcher_get_default_options();
|
476 |
|
477 |
+
if ( ! isset( $options['pc_switcher'] ) ) {
|
478 |
$options['pc_switcher'] = $default_options['pc_switcher'];
|
479 |
+
}
|
480 |
+
if ( ! isset( $options['default_css'] ) ) {
|
481 |
$options['default_css'] = $default_options['default_css'];
|
482 |
+
}
|
483 |
|
484 |
+
if ( ! isset( $options['theme_smartphone'] ) ) {
|
485 |
$options['theme_smartphone'] = $default_options['theme_smartphone'];
|
486 |
+
}
|
487 |
+
if ( ! isset( $options['theme_tablet'] ) ) {
|
488 |
$options['theme_tablet'] = $default_options['theme_tablet'];
|
489 |
+
}
|
490 |
+
if ( ! isset( $options['theme_mobile'] ) ) {
|
491 |
$options['theme_mobile'] = $default_options['theme_mobile'];
|
492 |
+
}
|
493 |
+
if ( ! isset( $options['theme_game'] ) ) {
|
494 |
$options['theme_game'] = $default_options['theme_game'];
|
495 |
+
}
|
496 |
|
497 |
+
if ( ! isset( $options['userAgent_smart'] ) ) {
|
498 |
$options['userAgent_smart'] = $default_options['userAgent_smart'];
|
499 |
+
}
|
500 |
+
if ( ! isset( $options['userAgent_tablet'] ) ) {
|
501 |
$options['userAgent_tablet'] = $default_options['userAgent_tablet'];
|
502 |
+
}
|
503 |
+
if ( ! isset( $options['userAgent_mobile'] ) ) {
|
504 |
$options['userAgent_mobile'] = $default_options['userAgent_mobile'];
|
505 |
+
}
|
506 |
+
if ( ! isset( $options['userAgent_game'] ) ) {
|
507 |
$options['userAgent_game'] = $default_options['userAgent_game'];
|
508 |
+
}
|
509 |
+
|
510 |
+
if ( ! isset( $options['disable_path'] ) ) {
|
511 |
+
$options['disable_path'] = $default_options['disable_path'];
|
512 |
+
}
|
513 |
+
if ( ! isset( $options['enable_regex'] ) ) {
|
514 |
+
$options['enable_regex'] = $default_options['enable_regex'];
|
515 |
+
}
|
516 |
|
517 |
return $options;
|
518 |
}
|
526 |
?>
|
527 |
<div class="wrap">
|
528 |
<div id="icon-themes" class="icon32"><br></div>
|
529 |
+
<h2><?php printf( __( 'Multi Device Switcher', 'multi-device-switcher' ), wp_get_theme()->get( 'Name' ) ); ?></h2>
|
530 |
<?php settings_errors(); ?>
|
531 |
|
532 |
<form method="post" action="options.php">
|
534 |
settings_fields( 'multi_device_switcher' );
|
535 |
$options = multi_device_switcher_get_options();
|
536 |
|
537 |
+
$default_theme = wp_get_theme()->get( 'Name' );
|
538 |
$themes = wp_get_themes();
|
539 |
$theme_names = array();
|
540 |
|
541 |
+
if ( count( $themes ) ) {
|
542 |
foreach ( $themes as $t ) {
|
543 |
+
$theme_names[] = $t->get( 'Name' );
|
544 |
}
|
545 |
+
natcasesort( $theme_names );
|
546 |
}
|
547 |
?>
|
548 |
|
554 |
<td>
|
555 |
|
556 |
<?php
|
557 |
+
if ( count( $theme_names ) ) {
|
558 |
$html = '<select name="multi_device_switcher_options[theme_smartphone]">';
|
559 |
|
560 |
+
if ( ( 'None' == $options['theme_smartphone'] ) || ( '' == $options['theme_smartphone'] ) ) {
|
561 |
$html .= '<option value="None" selected="selected">' . __( 'None', 'multi-device-switcher' ) . '</option>';
|
562 |
}
|
563 |
else {
|
565 |
}
|
566 |
|
567 |
foreach ( $theme_names as $theme_name ) {
|
568 |
+
if ( $default_theme == $theme_name ) {
|
569 |
continue;
|
570 |
+
}
|
571 |
if ( $options['theme_smartphone'] == $theme_name ) {
|
572 |
+
$html .= '<option value="' . esc_attr( $theme_name ) . '" selected="selected">' . esc_html( $theme_name ) . '</option>';
|
573 |
}
|
574 |
else {
|
575 |
+
$html .= '<option value="' . esc_attr( $theme_name ) . '">' . esc_html( $theme_name ) . '</option>';
|
576 |
}
|
577 |
}
|
578 |
$html .= '</select>';
|
585 |
<td>
|
586 |
|
587 |
<?php
|
588 |
+
if ( count( $theme_names ) ) {
|
589 |
$html = '<select name="multi_device_switcher_options[theme_tablet]">';
|
590 |
|
591 |
+
if ( ( 'None' == $options['theme_tablet'] ) || ( '' == $options['theme_tablet'] ) ) {
|
592 |
$html .= '<option value="None" selected="selected">' . __( 'None', 'multi-device-switcher' ) . '</option>';
|
593 |
}
|
594 |
else {
|
596 |
}
|
597 |
|
598 |
foreach ( $theme_names as $theme_name ) {
|
599 |
+
if ( $default_theme == $theme_name ) {
|
600 |
continue;
|
601 |
+
}
|
602 |
if ( $options['theme_tablet'] == $theme_name ) {
|
603 |
+
$html .= '<option value="' . esc_attr( $theme_name ) . '" selected="selected">' . esc_html( $theme_name ) . '</option>';
|
604 |
}
|
605 |
else {
|
606 |
+
$html .= '<option value="' . esc_attr( $theme_name ) . '">' . esc_html( $theme_name ) . '</option>';
|
607 |
}
|
608 |
}
|
609 |
$html .= '</select>';
|
616 |
<td>
|
617 |
|
618 |
<?php
|
619 |
+
if ( count( $theme_names ) ) {
|
620 |
$html = '<select name="multi_device_switcher_options[theme_mobile]">';
|
621 |
|
622 |
+
if ( ( 'None' == $options['theme_mobile'] ) || ( '' == $options['theme_mobile'] ) ) {
|
623 |
$html .= '<option value="None" selected="selected">' . __( 'None', 'multi-device-switcher' ) . '</option>';
|
624 |
}
|
625 |
else {
|
627 |
}
|
628 |
|
629 |
foreach ( $theme_names as $theme_name ) {
|
630 |
+
if ( $default_theme == $theme_name ) {
|
631 |
continue;
|
632 |
+
}
|
633 |
if ( $options['theme_mobile'] == $theme_name ) {
|
634 |
+
$html .= '<option value="' . esc_attr( $theme_name ) . '" selected="selected">' . esc_html( $theme_name ) . '</option>';
|
635 |
}
|
636 |
else {
|
637 |
+
$html .= '<option value="' . esc_attr( $theme_name ) . '">' . esc_html( $theme_name ) . '</option>';
|
638 |
}
|
639 |
}
|
640 |
$html .= '</select>';
|
647 |
<td>
|
648 |
|
649 |
<?php
|
650 |
+
if ( count( $theme_names ) ) {
|
651 |
$html = '<select name="multi_device_switcher_options[theme_game]">';
|
652 |
|
653 |
+
if ( ( 'None' == $options['theme_game'] ) || ( '' == $options['theme_game'] ) ) {
|
654 |
$html .= '<option value="None" selected="selected">' . __( 'None', 'multi-device-switcher' ) . '</option>';
|
655 |
}
|
656 |
else {
|
658 |
}
|
659 |
|
660 |
foreach ( $theme_names as $theme_name ) {
|
661 |
+
if ( $default_theme == $theme_name ) {
|
662 |
continue;
|
663 |
+
}
|
664 |
if ( $options['theme_game'] == $theme_name ) {
|
665 |
+
$html .= '<option value="' . esc_attr( $theme_name ) . '" selected="selected">' . esc_html( $theme_name ) . '</option>';
|
666 |
}
|
667 |
else {
|
668 |
+
$html .= '<option value="' . esc_attr( $theme_name ) . '">' . esc_html( $theme_name ) . '</option>';
|
669 |
}
|
670 |
}
|
671 |
$html .= '</select>';
|
680 |
<table class="form-table">
|
681 |
|
682 |
<?php
|
683 |
+
foreach ( $options as $custom_switcher_option => $custom_switcher_theme ) {
|
684 |
+
if ( ! preg_match( '/^custom_switcher_theme_/', $custom_switcher_option ) ) {
|
685 |
continue;
|
686 |
+
}
|
687 |
|
688 |
+
$custom_switcher_name = preg_replace( '/^custom_switcher_theme_/', '', $custom_switcher_option );
|
|
|
|
|
689 |
?>
|
690 |
|
691 |
+
<tr><th scope="row"><?php echo esc_html( $custom_switcher_name ); ?></th>
|
692 |
<td>
|
693 |
|
694 |
<?php
|
695 |
+
if ( count( $theme_names ) ) {
|
696 |
$html = '<select name="multi_device_switcher_options[' . $custom_switcher_option . ']">';
|
697 |
|
698 |
+
if ( ( 'None' == $custom_switcher_theme ) || ( '' == $custom_switcher_theme ) ) {
|
699 |
$html .= '<option value="None" selected="selected">' . __( 'None', 'multi-device-switcher' ) . '</option>';
|
700 |
}
|
701 |
else {
|
703 |
}
|
704 |
|
705 |
foreach ( $theme_names as $theme_name ) {
|
706 |
+
if ( $default_theme == $theme_name ) {
|
707 |
continue;
|
708 |
+
}
|
709 |
if ( $custom_switcher_theme == $theme_name ) {
|
710 |
+
$html .= '<option value="' . esc_attr( $theme_name ) . '" selected="selected">' . esc_html( $theme_name ) . '</option>';
|
711 |
}
|
712 |
else {
|
713 |
+
$html .= '<option value="' . esc_attr( $theme_name ) . '">' . esc_html( $theme_name ) . '</option>';
|
714 |
}
|
715 |
}
|
716 |
$html .= '</select>';
|
717 |
+
$html .= ' <span class="submit"><input type="submit" name="multi_device_switcher_options[delete_custom_switcher_' . $custom_switcher_name . ']" value="' . __( 'Delete', 'multi-device-switcher' ) . '" onclick="return confirm(\'' . esc_html( sprintf( __( 'Are you sure you want to delete %1$s ?', 'multi-device-switcher' ), $custom_switcher_name ) ) . '\');" class="button"></span>';
|
718 |
}
|
719 |
echo $html;
|
720 |
?>
|
743 |
|
744 |
<table class="form-table">
|
745 |
<tr><th scope="row"><?php _e( 'Smart Phone', 'multi-device-switcher' ); ?></th>
|
746 |
+
<td><textarea name="multi_device_switcher_options[userAgent_smart]" rows="4" cols="42"><?php echo esc_textarea( $options['userAgent_smart'] ); ?></textarea></td>
|
747 |
</tr>
|
748 |
<tr><th scope="row"><?php _e( 'Tablet PC', 'multi-device-switcher' ); ?></th>
|
749 |
+
<td><textarea name="multi_device_switcher_options[userAgent_tablet]" rows="4" cols="42"><?php echo esc_textarea( $options['userAgent_tablet'] ); ?></textarea></td>
|
750 |
</tr>
|
751 |
<tr><th scope="row"><?php _e( 'Mobile Phone', 'multi-device-switcher' ); ?></th>
|
752 |
+
<td><textarea name="multi_device_switcher_options[userAgent_mobile]" rows="4" cols="42"><?php echo esc_textarea( $options['userAgent_mobile'] ); ?></textarea></td>
|
753 |
</tr>
|
754 |
<tr><th scope="row"><?php _e( 'Game Platforms', 'multi-device-switcher' ); ?></th>
|
755 |
+
<td><textarea name="multi_device_switcher_options[userAgent_game]" rows="4" cols="42"><?php echo esc_textarea( $options['userAgent_game'] ); ?></textarea></td>
|
756 |
</tr>
|
757 |
<tr><th></th>
|
758 |
<td><span class="submit"><input type="submit" name="multi_device_switcher_options[restore_UserAgent]" value="<?php _e( 'Reset Settings to Default UserAgent', 'multi-device-switcher' ); ?>" class="button"></span></td>
|
763 |
<h3><?php _e( 'Custom Switcher UserAgent', 'multi-device-switcher' ); ?></h3>
|
764 |
<table class="form-table">
|
765 |
<?php
|
766 |
+
foreach ( $options as $custom_switcher_option => $custom_switcher_userAgent ) {
|
767 |
+
if ( ! preg_match( '/^custom_switcher_userAgent_/', $custom_switcher_option ) ) {
|
768 |
continue;
|
769 |
+
}
|
770 |
|
771 |
+
$custom_switcher_name = preg_replace( '/^custom_switcher_userAgent_/', '', $custom_switcher_option );
|
|
|
|
|
772 |
?>
|
773 |
|
774 |
+
<tr><th scope="row"><?php echo esc_html( $custom_switcher_name ); ?></th>
|
775 |
+
<td><textarea name="multi_device_switcher_options[<?php echo esc_attr( $custom_switcher_option ); ?>]" rows="4" cols="42"><?php echo esc_textarea( $custom_switcher_userAgent ); ?></textarea></td>
|
776 |
</tr>
|
777 |
<?php
|
778 |
}
|
788 |
<tr><th scope="row"><?php _e( 'Add PC Switcher', 'multi-device-switcher' ); ?></th>
|
789 |
<td>
|
790 |
<legend class="screen-reader-text"><span><?php _e( 'Add PC Switcher', 'multi-device-switcher' ); ?></span></legend>
|
791 |
+
<label><input type="checkbox" name="multi_device_switcher_options[pc_switcher]" id="pc-switcher" value="1"<?php checked( 1, $options['pc_switcher'] ); ?>> <?php _e( 'Add a PC Switcher to the footer.', 'multi-device-switcher' ); ?></label>
|
792 |
</td>
|
793 |
</tr>
|
794 |
<tr><th scope="row"><?php _e( 'Add default CSS', 'multi-device-switcher' ); ?></th>
|
795 |
<td>
|
796 |
<legend class="screen-reader-text"><span><?php _e( 'Add default CSS', 'multi-device-switcher' ); ?></span></legend>
|
797 |
+
<label><input type="checkbox" name="multi_device_switcher_options[default_css]" id="add-default-css" value="1"<?php checked( 1, $options['default_css'] ); ?>> <?php _e( 'Add a default CSS.', 'multi-device-switcher' ); ?></label>
|
798 |
+
</td>
|
799 |
+
</tr>
|
800 |
+
</table>
|
801 |
+
</fieldset>
|
802 |
+
|
803 |
+
<fieldset id="Disable-Switcher" class="options">
|
804 |
+
<h3 class="label"><?php _e( 'Disable Switcher', 'multi-device-switcher' ); ?></h3>
|
805 |
+
|
806 |
+
<table class="form-table">
|
807 |
+
<tr><th scope="row"><?php _e( 'Path', 'multi-device-switcher' ); ?></th>
|
808 |
+
<td>
|
809 |
+
<legend class="screen-reader-text"><span><?php _e( 'Path', 'multi-device-switcher' ); ?></span></legend>
|
810 |
+
<?php echo esc_html( home_url() ); ?>
|
811 |
+
<textarea name="multi_device_switcher_options[disable_path]" rows="16" cols="42" wrap="off"><?php echo esc_textarea( $options['disable_path'] ); ?></textarea>
|
812 |
+
</td>
|
813 |
+
</tr>
|
814 |
+
<tr><th scope="row"><?php _e( 'Regex mode', 'multi-device-switcher' ); ?></th>
|
815 |
+
<td>
|
816 |
+
<legend class="screen-reader-text"><span><?php _e( 'Regex mode', 'multi-device-switcher' ); ?></span></legend>
|
817 |
+
<label><input type="checkbox" name="multi_device_switcher_options[enable_regex]" id="enable-regex" value="1"<?php checked( 1, $options['enable_regex'] ); ?>> <?php _e( 'Enable Regex', 'multi-device-switcher' ); ?></label>
|
818 |
</td>
|
819 |
</tr>
|
820 |
</table>
|
864 |
function multi_device_switcher_validate( $input ) {
|
865 |
$output = $default_options = multi_device_switcher_get_default_options();
|
866 |
|
867 |
+
if ( isset( $input['theme_smartphone'] ) ) {
|
868 |
$output['theme_smartphone'] = $input['theme_smartphone'];
|
869 |
+
}
|
870 |
+
if ( isset( $input['theme_tablet'] ) ) {
|
871 |
$output['theme_tablet'] = $input['theme_tablet'];
|
872 |
+
}
|
873 |
+
if ( isset( $input['theme_mobile'] ) ) {
|
874 |
$output['theme_mobile'] = $input['theme_mobile'];
|
875 |
+
}
|
876 |
+
if ( isset( $input['theme_game'] ) ) {
|
877 |
$output['theme_game'] = $input['theme_game'];
|
878 |
+
}
|
879 |
|
880 |
+
if ( isset( $input['restore_UserAgent'] ) ) {
|
881 |
$output['userAgent_smart'] = $default_options['userAgent_smart'];
|
882 |
$output['userAgent_tablet'] = $default_options['userAgent_tablet'];
|
883 |
$output['userAgent_mobile'] = $default_options['userAgent_mobile'];
|
884 |
$output['userAgent_game'] = $default_options['userAgent_game'];
|
885 |
}
|
886 |
else {
|
887 |
+
if ( isset( $input['userAgent_smart'] ) ) {
|
888 |
$output['userAgent_smart'] = $input['userAgent_smart'];
|
889 |
+
}
|
890 |
+
if ( isset( $input['userAgent_tablet'] ) ) {
|
891 |
$output['userAgent_tablet'] = $input['userAgent_tablet'];
|
892 |
+
}
|
893 |
+
if ( isset( $input['userAgent_mobile'] ) ) {
|
894 |
$output['userAgent_mobile'] = $input['userAgent_mobile'];
|
895 |
+
}
|
896 |
+
if ( isset( $input['userAgent_game'] ) ) {
|
897 |
$output['userAgent_game'] = $input['userAgent_game'];
|
898 |
+
}
|
899 |
}
|
900 |
|
901 |
foreach ( $input as $key => $val ) {
|
902 |
+
if ( ! preg_match( '/^custom_switcher_theme_/', $key ) ) {
|
903 |
continue;
|
904 |
+
}
|
905 |
|
906 |
+
$custom_switcher_name = preg_replace( '/^custom_switcher_theme_/', '', $key );
|
907 |
|
908 |
+
if ( isset( $input[ 'custom_switcher_theme_' . $custom_switcher_name ] ) ) {
|
909 |
+
$output[ 'custom_switcher_theme_' . $custom_switcher_name ] = $input[ 'custom_switcher_theme_' . $custom_switcher_name ];
|
910 |
+
}
|
911 |
+
if ( isset( $input[ 'custom_switcher_userAgent_' . $custom_switcher_name ] ) ) {
|
912 |
+
$output[ 'custom_switcher_userAgent_' . $custom_switcher_name ] = $input[ 'custom_switcher_userAgent_' . $custom_switcher_name ];
|
913 |
+
}
|
914 |
}
|
915 |
|
916 |
foreach ( $input as $key => $val ) {
|
917 |
+
if ( ! preg_match( '/^delete_custom_switcher_/', $key ) ) {
|
918 |
continue;
|
919 |
+
}
|
920 |
|
921 |
+
$custom_switcher_name = preg_replace( '/^delete_custom_switcher_/', '', $key );
|
922 |
|
923 |
+
unset( $output[ 'custom_switcher_theme_' . $custom_switcher_name ] );
|
924 |
+
unset( $output[ 'custom_switcher_userAgent_' . $custom_switcher_name ] );
|
925 |
}
|
926 |
|
927 |
+
if ( isset( $input['add_custom_switcher'] ) && ! empty( $input['custom_switcher'] ) && ! $output[ 'custom_switcher_theme_' . $input['custom_switcher'] ] ) {
|
928 |
+
if ( ! in_array( $input['custom_switcher'], array( 'smartphone', 'smart', 'tablet', 'mobile', 'game' ) )
|
929 |
+
&& preg_match( '/^[A-Za-z0-9]{1,20}$/', $input['custom_switcher'] ) ) {
|
930 |
+
$output[ 'custom_switcher_theme_' . $input['custom_switcher'] ] = 'None';
|
931 |
+
$output[ 'custom_switcher_userAgent_' . $input['custom_switcher'] ] = '';
|
932 |
}
|
933 |
}
|
934 |
|
935 |
+
$output['pc_switcher'] = isset( $input['pc_switcher'] ) ? $input['pc_switcher'] : 0;
|
936 |
+
$output['default_css'] = isset( $input['default_css'] ) ? $input['default_css'] : 0;
|
937 |
+
|
938 |
+
$output['disable_path'] = isset( $input['disable_path'] ) ? $input['disable_path'] : '';
|
939 |
+
$output['enable_regex'] = isset( $input['enable_regex'] ) ? $input['enable_regex'] : 0;
|
940 |
|
941 |
return apply_filters( 'multi_device_switcher_validate', $output, $input, $default_options );
|
942 |
}
|
943 |
|
944 |
+
/**
|
945 |
+
* plugin customization options
|
946 |
+
*
|
947 |
+
* @param $wp_customize Theme Customizer object
|
948 |
+
* @return void
|
949 |
+
*
|
950 |
+
* @since 1.3.1
|
951 |
+
*/
|
952 |
+
function multi_device_switcher_customize_register( $wp_customize ) {
|
953 |
+
load_plugin_textdomain( 'multi-device-switcher', false, 'multi-device-switcher/languages' );
|
954 |
+
$options = multi_device_switcher_get_options();
|
955 |
+
$default_theme_options = multi_device_switcher_get_default_options();
|
956 |
+
$default_theme = wp_get_theme()->get( 'Name' );
|
957 |
+
$themes = wp_get_themes();
|
958 |
+
|
959 |
+
$theme_names = array();
|
960 |
+
$choices = array();
|
961 |
+
|
962 |
+
if ( count( $themes ) ) {
|
963 |
+
foreach ( $themes as $t ) {
|
964 |
+
$theme_names[] = $t->get( 'Name' );
|
965 |
+
}
|
966 |
+
natcasesort( $theme_names );
|
967 |
+
|
968 |
+
$choices['None'] = __( 'None', 'multi-device-switcher' );
|
969 |
+
foreach ( $theme_names as $theme_name ) {
|
970 |
+
if ( $default_theme == $theme_name ) {
|
971 |
+
continue;
|
972 |
+
}
|
973 |
+
$choices[ $theme_name ] = $theme_name;
|
974 |
+
}
|
975 |
+
}
|
976 |
+
|
977 |
+
$switcher = array(
|
978 |
+
'theme_smartphone' => __( 'Smart Phone Theme', 'multi-device-switcher' ),
|
979 |
+
'theme_tablet' => __( 'Tablet PC Theme', 'multi-device-switcher' ),
|
980 |
+
'theme_mobile' => __( 'Mobile Phone Theme', 'multi-device-switcher' ),
|
981 |
+
'theme_game' => __( 'Game Platforms Theme', 'multi-device-switcher' ),
|
982 |
+
);
|
983 |
+
|
984 |
+
$wp_customize->add_section( 'multi_device_switcher', array(
|
985 |
+
'title' => __( 'Multi Device Switcher', 'multi-device-switcher' ),
|
986 |
+
'priority' => 80,
|
987 |
+
) );
|
988 |
+
|
989 |
+
foreach ( $switcher as $name => $label ) {
|
990 |
+
$wp_customize->add_setting( 'multi_device_switcher_options[' . $name . ']', array(
|
991 |
+
'default' => $default_theme_options[ $name ],
|
992 |
+
'type' => 'option',
|
993 |
+
'capability' => 'edit_theme_options',
|
994 |
+
) );
|
995 |
+
|
996 |
+
$wp_customize->add_control( 'multi_device_switcher_options[' . $name . ']', array(
|
997 |
+
'label' => $label,
|
998 |
+
'section' => 'multi_device_switcher',
|
999 |
+
'type' => 'select',
|
1000 |
+
'choices' => $choices,
|
1001 |
+
) );
|
1002 |
+
}
|
1003 |
+
|
1004 |
+
foreach ( $options as $custom_switcher_option => $custom_switcher_theme ) {
|
1005 |
+
if ( ! preg_match( '/^custom_switcher_theme_/', $custom_switcher_option ) ) {
|
1006 |
+
continue;
|
1007 |
+
}
|
1008 |
+
|
1009 |
+
$label = preg_replace( '/^custom_switcher_theme_/', '', $custom_switcher_option );
|
1010 |
+
|
1011 |
+
$wp_customize->add_setting( 'multi_device_switcher_options[' . $custom_switcher_option . ']', array(
|
1012 |
+
'default' => __( 'None', 'multi-device-switcher' ),
|
1013 |
+
'type' => 'option',
|
1014 |
+
'capability' => 'edit_theme_options',
|
1015 |
+
) );
|
1016 |
+
|
1017 |
+
$wp_customize->add_control( 'multi_device_switcher_options[' . $custom_switcher_option . ']', array(
|
1018 |
+
'label' => $label,
|
1019 |
+
'section' => 'multi_device_switcher',
|
1020 |
+
'type' => 'select',
|
1021 |
+
'choices' => $choices,
|
1022 |
+
) );
|
1023 |
+
|
1024 |
+
}
|
1025 |
+
}
|
1026 |
+
|
1027 |
+
add_action( 'customize_register', 'multi_device_switcher_customize_register' );
|
1028 |
+
|
1029 |
/**
|
1030 |
* include PC Switcher Widget.
|
1031 |
*
|
1032 |
* @since 1.2
|
1033 |
*/
|
1034 |
+
require_once( dirname( __FILE__ ) . '/pc-switcher-widget.php' );
|
1035 |
+
|
1036 |
+
/**
|
1037 |
+
* include Multi Device Switcher Command
|
1038 |
+
*
|
1039 |
+
* @since 1.4
|
1040 |
+
*/
|
1041 |
+
if ( defined( 'WP_CLI' ) && WP_CLI ) {
|
1042 |
+
require_once( dirname( __FILE__ ) . '/wp-cli.php' );
|
1043 |
+
}
|
1044 |
|
1045 |
?>
|
pc-switcher-widget.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Widget Name: PC Switcher Widget
|
4 |
Plugin URI: https://github.com/thingsym/multi-device-switcher
|
5 |
Description: PC Switcher Widget add-on for the Multi Device Switcher. Use this widget to add the PC Switcher to a widget.
|
6 |
-
Version: 1.
|
7 |
Author: thingsym
|
8 |
Author URI: http://www.thingslabo.com/
|
9 |
License: GPL2
|
@@ -34,54 +34,56 @@ Domain Path: /languages/
|
|
34 |
*
|
35 |
* @since 1.2
|
36 |
*/
|
37 |
-
if ( class_exists('Multi_Device_Switcher') )
|
38 |
-
add_action('widgets_init', '
|
|
|
39 |
|
40 |
-
function
|
41 |
-
register_widget('PC_Switcher');
|
42 |
}
|
43 |
|
44 |
class PC_Switcher extends WP_Widget {
|
45 |
|
46 |
function __construct() {
|
47 |
-
load_plugin_textdomain('multi-device-switcher', false, 'multi-device-switcher/languages');
|
48 |
-
$widget_ops = array('classname' => 'widget_pc_switcher', 'description' => __(
|
49 |
-
parent::__construct('pc-switcher', __('PC Switcher', 'multi-device-switcher'), $widget_ops);
|
50 |
$this->alt_option_name = 'widget_pc_switcher';
|
51 |
|
52 |
-
add_action( 'save_post', array(&$this, 'flush_widget_cache') );
|
53 |
-
add_action( 'deleted_post', array(&$this, 'flush_widget_cache') );
|
54 |
-
add_action( 'switch_theme', array(&$this, 'flush_widget_cache') );
|
55 |
}
|
56 |
|
57 |
-
function widget($args, $instance) {
|
58 |
-
if ( !function_exists( 'multi_device_switcher_add_pc_switcher' ) )
|
59 |
return;
|
|
|
60 |
|
61 |
global $multi_device_switcher;
|
62 |
$name = $multi_device_switcher->get_device_theme();
|
63 |
|
64 |
-
if ( $name &&
|
65 |
|
66 |
-
$cache = wp_cache_get('widget_pc_switcher', 'widget');
|
67 |
|
68 |
-
if ( !is_array($cache) )
|
69 |
$cache = array();
|
|
|
70 |
|
71 |
-
if ( isset($cache[ $args['widget_id'] ]) ) {
|
72 |
echo $cache[ $args['widget_id'] ];
|
73 |
return;
|
74 |
}
|
75 |
|
76 |
ob_start();
|
77 |
-
extract($args);
|
78 |
|
79 |
-
echo $before_widget;
|
80 |
multi_device_switcher_add_pc_switcher();
|
81 |
-
echo $after_widget;
|
82 |
|
83 |
$cache[ $args['widget_id'] ] = ob_get_flush();
|
84 |
-
wp_cache_set('widget_pc_switcher', $cache, 'widget');
|
85 |
}
|
86 |
}
|
87 |
|
@@ -91,14 +93,15 @@ class PC_Switcher extends WP_Widget {
|
|
91 |
$this->flush_widget_cache();
|
92 |
|
93 |
$alloptions = wp_cache_get( 'alloptions', 'options' );
|
94 |
-
if ( isset($alloptions['widget_pc_switcher']) )
|
95 |
-
delete_option('widget_pc_switcher');
|
|
|
96 |
|
97 |
return $instance;
|
98 |
}
|
99 |
|
100 |
function flush_widget_cache() {
|
101 |
-
wp_cache_delete('widget_pc_switcher', 'widget');
|
102 |
}
|
103 |
|
104 |
function form( $instance ) {
|
3 |
Widget Name: PC Switcher Widget
|
4 |
Plugin URI: https://github.com/thingsym/multi-device-switcher
|
5 |
Description: PC Switcher Widget add-on for the Multi Device Switcher. Use this widget to add the PC Switcher to a widget.
|
6 |
+
Version: 1.4.0
|
7 |
Author: thingsym
|
8 |
Author URI: http://www.thingslabo.com/
|
9 |
License: GPL2
|
34 |
*
|
35 |
* @since 1.2
|
36 |
*/
|
37 |
+
if ( class_exists( 'Multi_Device_Switcher' ) ) {
|
38 |
+
add_action( 'widgets_init', 'pc_switcher_load_widgets' );
|
39 |
+
}
|
40 |
|
41 |
+
function pc_switcher_load_widgets() {
|
42 |
+
register_widget( 'PC_Switcher' );
|
43 |
}
|
44 |
|
45 |
class PC_Switcher extends WP_Widget {
|
46 |
|
47 |
function __construct() {
|
48 |
+
load_plugin_textdomain( 'multi-device-switcher', false, 'multi-device-switcher/languages' );
|
49 |
+
$widget_ops = array( 'classname' => 'widget_pc_switcher', 'description' => __( 'Add the PC Switcher to a widget.', 'multi-device-switcher' ) );
|
50 |
+
parent::__construct( 'pc-switcher', __( 'PC Switcher', 'multi-device-switcher' ), $widget_ops );
|
51 |
$this->alt_option_name = 'widget_pc_switcher';
|
52 |
|
53 |
+
add_action( 'save_post', array( &$this, 'flush_widget_cache' ) );
|
54 |
+
add_action( 'deleted_post', array( &$this, 'flush_widget_cache' ) );
|
55 |
+
add_action( 'switch_theme', array( &$this, 'flush_widget_cache' ) );
|
56 |
}
|
57 |
|
58 |
+
function widget( $args, $instance ) {
|
59 |
+
if ( ! function_exists( 'multi_device_switcher_add_pc_switcher' ) ) {
|
60 |
return;
|
61 |
+
}
|
62 |
|
63 |
global $multi_device_switcher;
|
64 |
$name = $multi_device_switcher->get_device_theme();
|
65 |
|
66 |
+
if ( $name && 'None' != $name ) {
|
67 |
|
68 |
+
$cache = wp_cache_get( 'widget_pc_switcher', 'widget' );
|
69 |
|
70 |
+
if ( ! is_array( $cache ) ) {
|
71 |
$cache = array();
|
72 |
+
}
|
73 |
|
74 |
+
if ( isset( $cache[ $args['widget_id'] ] ) ) {
|
75 |
echo $cache[ $args['widget_id'] ];
|
76 |
return;
|
77 |
}
|
78 |
|
79 |
ob_start();
|
|
|
80 |
|
81 |
+
echo $args['before_widget'];
|
82 |
multi_device_switcher_add_pc_switcher();
|
83 |
+
echo $args['after_widget'];
|
84 |
|
85 |
$cache[ $args['widget_id'] ] = ob_get_flush();
|
86 |
+
wp_cache_set( 'widget_pc_switcher', $cache, 'widget' );
|
87 |
}
|
88 |
}
|
89 |
|
93 |
$this->flush_widget_cache();
|
94 |
|
95 |
$alloptions = wp_cache_get( 'alloptions', 'options' );
|
96 |
+
if ( isset( $alloptions['widget_pc_switcher'] ) ) {
|
97 |
+
delete_option( 'widget_pc_switcher' );
|
98 |
+
}
|
99 |
|
100 |
return $instance;
|
101 |
}
|
102 |
|
103 |
function flush_widget_cache() {
|
104 |
+
wp_cache_delete( 'widget_pc_switcher', 'widget' );
|
105 |
}
|
106 |
|
107 |
function form( $instance ) {
|
readme.md
CHANGED
@@ -1,15 +1,16 @@
|
|
1 |
# Introducing Multi Device Switcher
|
2 |
|
3 |
This WordPress plugin allows you to set a separate theme for device (Smart Phone, Tablet PC, Mobile Phone, Game and custom).
|
4 |
-
This plugin detects if your site is being viewed by UserAgent, and switches to selected theme.
|
5 |
-
The Custom Switcher can add every device.
|
6 |
|
7 |
## Features
|
8 |
|
9 |
- Set a separate theme for device (Smart Phone, Tablet PC, Mobile Phone, Game), switches to selected theme.
|
10 |
-
- Add every device by the Custom Switcher
|
11 |
-
- Add links 'Mobile' or 'PC' in the theme by the PC Switcher
|
|
|
12 |
- Can be using is_multi_device() function that detect of the device.
|
|
|
13 |
|
14 |
## How do I use it ?
|
15 |
|
@@ -26,6 +27,8 @@ The Custom Switcher can add every device.
|
|
26 |
<img src="screenshot-1.png">
|
27 |
<img src="screenshot-2.png">
|
28 |
<img src="screenshot-3.png">
|
|
|
|
|
29 |
|
30 |
## How to add the Custom Switcher
|
31 |
|
@@ -67,13 +70,79 @@ There are three ways how to Using the PC Switcher.
|
|
67 |
2. Configure settings. Check the checkbox 'Add a default CSS.' by PC Switcher option. If you want to customize CSS, uncheck the checkbox.
|
68 |
3. Have fun!
|
69 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
## UserAgent option Samples
|
71 |
|
72 |
* [Default UserAgent](https://github.com/thingsym/multi-device-switcher/wiki/Default-UserAgent)
|
73 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
## is_multi_device() function
|
75 |
|
76 |
-
is_multi_device() function is a boolean function, meaning it returns either TRUE or FALSE. Works through the detection of the device by the Multi_Device_Switcher class.
|
77 |
|
78 |
### Usage
|
79 |
|
@@ -90,6 +159,8 @@ if ( function_exists( 'is_multi_device' ) ) {
|
|
90 |
/* Display and echo smartphone specific stuff here */
|
91 |
} elseif ( is_multi_device('tablet') ) {
|
92 |
/* Display and echo tablet specific stuff here */
|
|
|
|
|
93 |
}
|
94 |
}
|
95 |
?>
|
@@ -111,6 +182,87 @@ if ( function_exists( 'is_multi_device' ) ) {
|
|
111 |
|
112 |
(boolean) Return boolean whether a particular device.
|
113 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
114 |
## Contributing
|
115 |
|
116 |
### Patches and Bug Fixes
|
@@ -146,6 +298,15 @@ You can send your own language pack to author.
|
|
146 |
|
147 |
## Changelog
|
148 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
* Version 1.3.0
|
150 |
* fixed: fix script, style, html and readme
|
151 |
* new features: is_multi_device() function
|
1 |
# Introducing Multi Device Switcher
|
2 |
|
3 |
This WordPress plugin allows you to set a separate theme for device (Smart Phone, Tablet PC, Mobile Phone, Game and custom).
|
4 |
+
This plugin detects if your site is being viewed by UserAgent, and switches to selected theme. The Custom Switcher can add every device.
|
|
|
5 |
|
6 |
## Features
|
7 |
|
8 |
- Set a separate theme for device (Smart Phone, Tablet PC, Mobile Phone, Game), switches to selected theme.
|
9 |
+
- Add every device by the **Custom Switcher**.
|
10 |
+
- Add links 'Mobile' or 'PC' in the theme by the **PC Switcher**, switch to the default theme.
|
11 |
+
- Disable the switching of the theme by a particular URL by the **Disable Switcher**.
|
12 |
- Can be using is_multi_device() function that detect of the device.
|
13 |
+
- **Multi Device Switcher Command** command-line tool (required WP-CLI)
|
14 |
|
15 |
## How do I use it ?
|
16 |
|
27 |
<img src="screenshot-1.png">
|
28 |
<img src="screenshot-2.png">
|
29 |
<img src="screenshot-3.png">
|
30 |
+
<img src="screenshot-4.png">
|
31 |
+
<img src="screenshot-5.png">
|
32 |
|
33 |
## How to add the Custom Switcher
|
34 |
|
70 |
2. Configure settings. Check the checkbox 'Add a default CSS.' by PC Switcher option. If you want to customize CSS, uncheck the checkbox.
|
71 |
3. Have fun!
|
72 |
|
73 |
+
You can design the PC Switcher in the Style Sheet.
|
74 |
+
|
75 |
+
#### HTML output of the PC Switcher
|
76 |
+
|
77 |
+
```
|
78 |
+
<div class="pc-switcher"><span class="active">Mobile</span><a href="http://DOMEIN/PATH/TO/?pc-switcher=1">PC</a></div>
|
79 |
+
```
|
80 |
+
|
81 |
+
#### HTML output of the PC Switcher when switched
|
82 |
+
|
83 |
+
```
|
84 |
+
<div class="pc-switcher"><a href="http://DOMEIN/PATH/TO/?pc-switcher=0">Mobile</a><span class="active">PC</span></div>
|
85 |
+
```
|
86 |
+
|
87 |
+
## How to use the Disable Switcher
|
88 |
+
|
89 |
+
The **Disable Switcher** disable the switching of the theme by a particular URL. If you match the access the url and a string or a regular expression (Regex mode), disable the switching of the theme. Regex mode is for advanced users.
|
90 |
+
|
91 |
+
1. Go to the "Multi Device Switcher" options page through the 'Appearance' menu in WordPress.
|
92 |
+
2. Enter the path to the line by line where you want to disable by Disable Switcher option. Check the checkbox 'Enable Regex', if you want to use a regular expression.
|
93 |
+
3. Have fun!
|
94 |
+
|
95 |
+
### Examples
|
96 |
+
|
97 |
+
```
|
98 |
+
/sample-page
|
99 |
+
/2015/01/hello-world
|
100 |
+
```
|
101 |
+
|
102 |
+
##### Regex mode (in the case of regular expression)
|
103 |
+
|
104 |
+
```
|
105 |
+
\/sample\-
|
106 |
+
\/2015\/01
|
107 |
+
```
|
108 |
+
|
109 |
## UserAgent option Samples
|
110 |
|
111 |
* [Default UserAgent](https://github.com/thingsym/multi-device-switcher/wiki/Default-UserAgent)
|
112 |
|
113 |
+
|
114 |
+
## Detect the device by JavaScript
|
115 |
+
|
116 |
+
Multi Device Switcher set the Cookie that holds the state of the switch. You can get the Cookie and detect the device by JavaScript.
|
117 |
+
|
118 |
+
### Cookie
|
119 |
+
|
120 |
+
* `multi-device-switcher` The name of the device is switched (value: null | device name)
|
121 |
+
* `disable-switcher` State of disabled (value: null | 1)
|
122 |
+
* `pc-switcher` State of the PC Switcher when switched (value: null | 1)
|
123 |
+
|
124 |
+
### Examples
|
125 |
+
|
126 |
+
```
|
127 |
+
<script src="http://DOMEIN/PATH/TO/jquery.cookie.js"></script>
|
128 |
+
<script>
|
129 |
+
(function($) {
|
130 |
+
$(function() {
|
131 |
+
if ( $.cookie( 'multi-device-switcher' ) == 'smart' ) {
|
132 |
+
/* smartphone specific stuff here */
|
133 |
+
} else if ( $.cookie( 'multi-device-switcher' ) == 'tablet' ) {
|
134 |
+
/* tablet specific stuff here */
|
135 |
+
} else {
|
136 |
+
/* pc or other stuff here */
|
137 |
+
}
|
138 |
+
});
|
139 |
+
})(jQuery);
|
140 |
+
</script>
|
141 |
+
```
|
142 |
+
|
143 |
## is_multi_device() function
|
144 |
|
145 |
+
**is_multi_device()** function is a boolean function, meaning it returns either TRUE or FALSE. Works through the detection of the device by the Multi_Device_Switcher class.
|
146 |
|
147 |
### Usage
|
148 |
|
159 |
/* Display and echo smartphone specific stuff here */
|
160 |
} elseif ( is_multi_device('tablet') ) {
|
161 |
/* Display and echo tablet specific stuff here */
|
162 |
+
} else {
|
163 |
+
/* Display and echo pc or other stuff here */
|
164 |
}
|
165 |
}
|
166 |
?>
|
182 |
|
183 |
(boolean) Return boolean whether a particular device.
|
184 |
|
185 |
+
## Multi Device Switcher Command
|
186 |
+
|
187 |
+
The **Multi Device Switcher Command** is command-line tool.
|
188 |
+
|
189 |
+
Add-on the Multi Device Switcher Command, when you activate the plugin "Multi Device Switcher". To use the Multi Device Switcher Command is WP-CLI required.
|
190 |
+
|
191 |
+
### NAME
|
192 |
+
|
193 |
+
wp multi-device
|
194 |
+
|
195 |
+
### DESCRIPTION
|
196 |
+
|
197 |
+
Multi Device Switcher Command
|
198 |
+
|
199 |
+
### SYNOPSIS
|
200 |
+
|
201 |
+
wp multi-device <command>
|
202 |
+
|
203 |
+
### SUBCOMMANDS
|
204 |
+
|
205 |
+
add add Custom Switcher
|
206 |
+
css turn on/off default CSS
|
207 |
+
delete delete Custom Switcher
|
208 |
+
pc-switcher turn on/off PC Switcher
|
209 |
+
reset reset Settings to Default UserAgent
|
210 |
+
status get status of settings
|
211 |
+
theme get or switch a theme
|
212 |
+
useragent get or set UserAgent
|
213 |
+
|
214 |
+
|
215 |
+
For more information about the Multi Device Switcher Command, see `wp help multi-device <SUBCOMMANDS>`.
|
216 |
+
|
217 |
+
|
218 |
+
### Command examples
|
219 |
+
|
220 |
+
get status of settings
|
221 |
+
|
222 |
+
wp multi-device status
|
223 |
+
|
224 |
+
Active Theme: Twenty Fifteen | twentyfifteen
|
225 |
+
+--------------------------+-----------------+----------------+-------------------------------------------------------------------------+
|
226 |
+
| Device | Theme | Slug | UserAgent |
|
227 |
+
+--------------------------+-----------------+----------------+-------------------------------------------------------------------------+
|
228 |
+
| smartphone (Smart Phone) | Twenty Fourteen | twentyfourteen | iPhone, iPod, Android, dream, CUPCAKE, Windows Phone, webOS, BB10, Blac |
|
229 |
+
| | | | kBerry8707, BlackBerry9000, BlackBerry9300, BlackBerry9500, BlackBerry9 |
|
230 |
+
| | | | 530, BlackBerry9520, BlackBerry9550, BlackBerry9700, BlackBerry 93, Bla |
|
231 |
+
| | | | ckBerry 97, BlackBerry 99, BlackBerry 98 |
|
232 |
+
| tablet (Tablet PC) | Twenty Thirteen | twentythirteen | iPad, Kindle, Sony Tablet, Nexus 7 |
|
233 |
+
| mobile (Mobile Phone) | Twenty Twelve | twentytwelve | DoCoMo, SoftBank, J-PHONE, Vodafone, KDDI, UP.Browser, WILLCOM, emobile |
|
234 |
+
| | | | , DDIPOCKET, Windows CE, BlackBerry, Symbian, PalmOS, Huawei, IAC, Noki |
|
235 |
+
| | | | a |
|
236 |
+
| game (Game Platforms) | Twenty Eleven | twentyeleven | PlayStation Portable, PlayStation Vita, PSP, PS2, PLAYSTATION 3, PlaySt |
|
237 |
+
| | | | ation 4, Nitro, Nintendo 3DS, Nintendo Wii, Nintendo WiiU, Xbox |
|
238 |
+
+--------------------------+-----------------+----------------+-------------------------------------------------------------------------+
|
239 |
+
PC Switcher: on
|
240 |
+
default CSS: on
|
241 |
+
|
242 |
+
switch twentyfifteen in theme of smartphone using theme slug
|
243 |
+
|
244 |
+
wp multi-device theme smartphone twentyfifteen
|
245 |
+
|
246 |
+
set UserAgent in theme of tablet
|
247 |
+
|
248 |
+
wp multi-device useragent tablet 'iPad, Kindle, Sony Tablet, Nexus 7'
|
249 |
+
|
250 |
+
add example Custom Switcher
|
251 |
+
|
252 |
+
wp multi-device add example
|
253 |
+
|
254 |
+
add example Custom Switcher. set twentyfifteen theme and UserAgent using theme slug
|
255 |
+
|
256 |
+
wp multi-device add example twentyfifteen 'iPad, Kindle, Sony Tablet, Nexus 7'
|
257 |
+
|
258 |
+
delete example Custom Switcher
|
259 |
+
|
260 |
+
wp multi-device delete example
|
261 |
+
|
262 |
+
turn on default CSS
|
263 |
+
|
264 |
+
wp multi-device css on
|
265 |
+
|
266 |
## Contributing
|
267 |
|
268 |
### Patches and Bug Fixes
|
298 |
|
299 |
## Changelog
|
300 |
|
301 |
+
* Version 1.4.0
|
302 |
+
* edited: edit readme
|
303 |
+
* added: add cookies 'multi-device-switcher', 'disable-switcher'
|
304 |
+
* new features: Disable Switcher
|
305 |
+
* fixed: fix get_options_userAgent(), multi_device_switcher_get_options()
|
306 |
+
* fixed: add reserved words validate
|
307 |
+
* new features: Multi Device Switcher Command
|
308 |
+
* added: add option settings into Theme Customizer
|
309 |
+
* fixed: refactoring by the PHP_CodeSniffer
|
310 |
* Version 1.3.0
|
311 |
* fixed: fix script, style, html and readme
|
312 |
* new features: is_multi_device() function
|
readme.txt
CHANGED
@@ -5,8 +5,8 @@ Donate link: http://blog.thingslabo.com/archives/000251.html
|
|
5 |
Link: https://github.com/thingsym/multi-device-switcher
|
6 |
Tags: switcher, theme, ipad, iphone, android, tablet, mobile, game
|
7 |
Requires at least: 3.4
|
8 |
-
Tested up to: 4.
|
9 |
-
Stable tag: 1.
|
10 |
License: GPL2 or later
|
11 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
12 |
|
@@ -22,9 +22,11 @@ The Custom Switcher can add every device.
|
|
22 |
= Features =
|
23 |
|
24 |
* Set a separate theme for device (Smart Phone, Tablet PC, Mobile Phone, Game), switches to selected theme.
|
25 |
-
* Add every device by the Custom Switcher
|
26 |
-
* Add links 'Mobile' or 'PC' in the theme by the PC Switcher
|
27 |
-
*
|
|
|
|
|
28 |
|
29 |
= Contributing =
|
30 |
|
@@ -65,6 +67,7 @@ You can send your own language pack to author.
|
|
65 |
2. UserAgent option
|
66 |
3. PC Switcher option
|
67 |
4. PC Switcher button
|
|
|
68 |
|
69 |
== Installation ==
|
70 |
|
@@ -113,13 +116,80 @@ There are three ways how to Using the PC Switcher.
|
|
113 |
* Configure settings. Check the checkbox 'Add a default CSS.' by PC Switcher option. If you want to customize CSS, uncheck the checkbox.
|
114 |
* Have fun!
|
115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
= UserAgent option Samples =
|
117 |
|
118 |
* [Default UserAgent](https://github.com/thingsym/multi-device-switcher/wiki/Default-UserAgent)
|
119 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
= is_multi_device() function =
|
121 |
|
122 |
-
is_multi_device() function is a boolean function, meaning it returns either TRUE or FALSE. Works through the detection of the device by the Multi_Device_Switcher class.
|
123 |
|
124 |
= Usage =
|
125 |
|
@@ -136,6 +206,8 @@ if ( function_exists( 'is_multi_device' ) ) {
|
|
136 |
/* Display and echo smartphone specific stuff here */
|
137 |
} elseif ( is_multi_device('tablet') ) {
|
138 |
/* Display and echo tablet specific stuff here */
|
|
|
|
|
139 |
}
|
140 |
}
|
141 |
?>
|
@@ -157,9 +229,56 @@ if ( function_exists( 'is_multi_device' ) ) {
|
|
157 |
|
158 |
(boolean) Return boolean whether a particular device.
|
159 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
160 |
|
161 |
== Changelog ==
|
162 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
163 |
= 1.3.0 =
|
164 |
* fixed: fix script, style, html and readme
|
165 |
* new features: is_multi_device() function
|
5 |
Link: https://github.com/thingsym/multi-device-switcher
|
6 |
Tags: switcher, theme, ipad, iphone, android, tablet, mobile, game
|
7 |
Requires at least: 3.4
|
8 |
+
Tested up to: 4.1
|
9 |
+
Stable tag: 1.4.0
|
10 |
License: GPL2 or later
|
11 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
12 |
|
22 |
= Features =
|
23 |
|
24 |
* Set a separate theme for device (Smart Phone, Tablet PC, Mobile Phone, Game), switches to selected theme.
|
25 |
+
* Add every device by the **Custom Switcher**.
|
26 |
+
* Add links 'Mobile' or 'PC' in the theme by the **PC Switcher**, switch to the default theme.
|
27 |
+
* Disable the switching of the theme for each url by the **Disable Switcher**.
|
28 |
+
* Can be using **is_multi_device()** function that detect of the device.
|
29 |
+
* **Multi Device Switcher Command** command-line tool (required WP-CLI)
|
30 |
|
31 |
= Contributing =
|
32 |
|
67 |
2. UserAgent option
|
68 |
3. PC Switcher option
|
69 |
4. PC Switcher button
|
70 |
+
5. Disable Switcher
|
71 |
|
72 |
== Installation ==
|
73 |
|
116 |
* Configure settings. Check the checkbox 'Add a default CSS.' by PC Switcher option. If you want to customize CSS, uncheck the checkbox.
|
117 |
* Have fun!
|
118 |
|
119 |
+
|
120 |
+
You can design the PC Switcher in the Style Sheet.
|
121 |
+
|
122 |
+
**HTML output of the PC Switcher**
|
123 |
+
|
124 |
+
`
|
125 |
+
<div class="pc-switcher"><span class="active">Mobile</span><a href="http://DOMEIN/PATH/TO/?pc-switcher=1">PC</a></div>
|
126 |
+
`
|
127 |
+
|
128 |
+
**HTML output of the PC Switcher when switched**
|
129 |
+
|
130 |
+
`
|
131 |
+
<div class="pc-switcher"><a href="http://DOMEIN/PATH/TO/?pc-switcher=0">Mobile</a><span class="active">PC</span></div>
|
132 |
+
`
|
133 |
+
|
134 |
+
|
135 |
+
= How to use the Disable Switcher =
|
136 |
+
|
137 |
+
The **Disable Switcher** disable the switching of the theme by a particular URL. If you match the access the url and a string or a regular expression (Regex mode), disable the switching of the theme. Regex mode is for advanced users.
|
138 |
+
|
139 |
+
1. Go to the "Multi Device Switcher" options page through the 'Appearance' menu in WordPress.
|
140 |
+
2. Enter the path to the line by line where you want to disable by Disable Switcher option. Check the checkbox 'Enable Regex', if you want to use a regular expression.
|
141 |
+
3. Have fun!
|
142 |
+
|
143 |
+
= Examples =
|
144 |
+
|
145 |
+
`
|
146 |
+
/sample-page
|
147 |
+
/2015/01/hello-world
|
148 |
+
`
|
149 |
+
|
150 |
+
##### Regex mode (in the case of regular expression)
|
151 |
+
|
152 |
+
`
|
153 |
+
\/sample\-
|
154 |
+
\/2015\/01
|
155 |
+
`
|
156 |
+
|
157 |
= UserAgent option Samples =
|
158 |
|
159 |
* [Default UserAgent](https://github.com/thingsym/multi-device-switcher/wiki/Default-UserAgent)
|
160 |
|
161 |
+
= Detect the device by JavaScript =
|
162 |
+
|
163 |
+
Multi Device Switcher set the Cookie that holds the state of the switch. You can get the Cookie and detect the device by JavaScript.
|
164 |
+
|
165 |
+
= Cookie =
|
166 |
+
|
167 |
+
* `multi-device-switcher` The name of the device is switched (value: null | device name)
|
168 |
+
* `disable-switcher` State of disabled (value: null | 1)
|
169 |
+
* `pc-switcher` State of the PC Switcher when switched (value: null | 1)
|
170 |
+
|
171 |
+
= Examples =
|
172 |
+
|
173 |
+
`
|
174 |
+
<script src="http://DOMEIN/PATH/TO/jquery.cookie.js"></script>
|
175 |
+
<script>
|
176 |
+
(function($) {
|
177 |
+
$(function() {
|
178 |
+
if ( $.cookie( 'multi-device-switcher' ) == 'smart' ) {
|
179 |
+
/* smartphone specific stuff here */
|
180 |
+
} else if ( $.cookie( 'multi-device-switcher' ) == 'tablet' ) {
|
181 |
+
/* tablet specific stuff here */
|
182 |
+
} else {
|
183 |
+
/* pc or other stuff here */
|
184 |
+
}
|
185 |
+
});
|
186 |
+
})(jQuery);
|
187 |
+
</script>
|
188 |
+
`
|
189 |
+
|
190 |
= is_multi_device() function =
|
191 |
|
192 |
+
**is_multi_device()** function is a boolean function, meaning it returns either TRUE or FALSE. Works through the detection of the device by the Multi_Device_Switcher class.
|
193 |
|
194 |
= Usage =
|
195 |
|
206 |
/* Display and echo smartphone specific stuff here */
|
207 |
} elseif ( is_multi_device('tablet') ) {
|
208 |
/* Display and echo tablet specific stuff here */
|
209 |
+
} else {
|
210 |
+
/* Display and echo pc or other stuff here */
|
211 |
}
|
212 |
}
|
213 |
?>
|
229 |
|
230 |
(boolean) Return boolean whether a particular device.
|
231 |
|
232 |
+
= Multi Device Switcher Command =
|
233 |
+
|
234 |
+
The **Multi Device Switcher Command** is command-line tool.
|
235 |
+
|
236 |
+
Add-on the Multi Device Switcher Command, when you activate the plugin "Multi Device Switcher". To use the Multi Device Switcher Command is WP-CLI required.
|
237 |
+
|
238 |
+
= NAME =
|
239 |
+
|
240 |
+
`
|
241 |
+
wp multi-device
|
242 |
+
`
|
243 |
+
|
244 |
+
= DESCRIPTION =
|
245 |
+
|
246 |
+
`
|
247 |
+
Multi Device Switcher Command
|
248 |
+
`
|
249 |
+
|
250 |
+
= SYNOPSIS =
|
251 |
+
|
252 |
+
`
|
253 |
+
wp multi-device <command>
|
254 |
+
`
|
255 |
+
|
256 |
+
= SUBCOMMANDS =
|
257 |
+
|
258 |
+
`
|
259 |
+
add add Custom Switcher
|
260 |
+
css turn on/off default CSS
|
261 |
+
delete delete Custom Switcher
|
262 |
+
pc-switcher turn on/off PC Switcher
|
263 |
+
reset reset Settings to Default UserAgent
|
264 |
+
status get status of settings
|
265 |
+
theme get or switch a theme
|
266 |
+
useragent get or set UserAgent
|
267 |
+
`
|
268 |
+
|
269 |
+
For more information about the Multi Device Switcher Command, see `wp help multi-device <SUBCOMMANDS>`.
|
270 |
|
271 |
== Changelog ==
|
272 |
|
273 |
+
= 1.4.0 =
|
274 |
+
* edited: edit readme
|
275 |
+
* added: add cookies 'multi-device-switcher', 'disable-switcher'
|
276 |
+
* new features: Disable Switcher
|
277 |
+
* fixed: fix get_options_userAgent(), multi_device_switcher_get_options()
|
278 |
+
* fixed: add reserved words validate
|
279 |
+
* new features: Multi Device Switcher Command
|
280 |
+
* added: add option settings into Theme Customizer
|
281 |
+
* fixed: refactoring by the PHP_CodeSniffer
|
282 |
= 1.3.0 =
|
283 |
* fixed: fix script, style, html and readme
|
284 |
* new features: is_multi_device() function
|
screenshot-1.png
CHANGED
Binary file
|
screenshot-2.png
CHANGED
Binary file
|
screenshot-3.png
CHANGED
Binary file
|
screenshot-5.png
ADDED
Binary file
|
uninstall.php
CHANGED
@@ -1,7 +1,8 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
if ( !defined( 'WP_UNINSTALL_PLUGIN' ) )
|
4 |
exit();
|
|
|
5 |
|
6 |
function multi_device_switcher_delete_plugin() {
|
7 |
delete_option( 'multi_device_switcher_options' );
|
1 |
<?php
|
2 |
|
3 |
+
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
|
4 |
exit();
|
5 |
+
}
|
6 |
|
7 |
function multi_device_switcher_delete_plugin() {
|
8 |
delete_option( 'multi_device_switcher_options' );
|
wp-cli.php
ADDED
@@ -0,0 +1,465 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Multi Device Switcher Command
|
4 |
+
*/
|
5 |
+
class Multi_Device_Switcher_Command extends WP_CLI_Command {
|
6 |
+
|
7 |
+
private $options = 'multi_device_switcher_options';
|
8 |
+
|
9 |
+
/**
|
10 |
+
* get status of settings
|
11 |
+
*
|
12 |
+
* ## EXAMPLES
|
13 |
+
*
|
14 |
+
* wp multi-device status
|
15 |
+
*
|
16 |
+
*/
|
17 |
+
public function status( $args, $assoc_args ) {
|
18 |
+
$options = get_option( $this->options );
|
19 |
+
$rows = array();
|
20 |
+
|
21 |
+
$slug_table = array( 'None' => '' );
|
22 |
+
$themes = wp_get_themes();
|
23 |
+
foreach ( $themes as $theme_slug => $header ) {
|
24 |
+
$slug_table[ $header->get( 'Name' ) ] = $theme_slug;
|
25 |
+
}
|
26 |
+
|
27 |
+
$rows[] = array(
|
28 |
+
'Device' => 'smartphone (Smart Phone)',
|
29 |
+
'Theme' => $options['theme_smartphone'],
|
30 |
+
'Slug' => $slug_table[ $options['theme_smartphone'] ],
|
31 |
+
'UserAgent' => $options['userAgent_smart'],
|
32 |
+
);
|
33 |
+
$rows[] = array(
|
34 |
+
'Device' => 'tablet (Tablet PC)',
|
35 |
+
'Theme' => $options['theme_tablet'],
|
36 |
+
'Slug' => $slug_table[ $options['theme_tablet'] ],
|
37 |
+
'UserAgent' => $options['userAgent_tablet'],
|
38 |
+
);
|
39 |
+
$rows[] = array(
|
40 |
+
'Device' => 'mobile (Mobile Phone)',
|
41 |
+
'Theme' => $options['theme_mobile'],
|
42 |
+
'Slug' => $slug_table[ $options['theme_mobile'] ],
|
43 |
+
'UserAgent' => $options['userAgent_mobile'],
|
44 |
+
);
|
45 |
+
$rows[] = array(
|
46 |
+
'Device' => 'game (Game Platforms)',
|
47 |
+
'Theme' => $options['theme_game'],
|
48 |
+
'Slug' => $slug_table[ $options['theme_game'] ],
|
49 |
+
'UserAgent' => $options['userAgent_game'],
|
50 |
+
);
|
51 |
+
|
52 |
+
foreach ( $options as $custom_switcher_option => $custom_switcher_theme ) {
|
53 |
+
if ( ! preg_match( '/^custom_switcher_theme_/', $custom_switcher_option ) ) {
|
54 |
+
continue;
|
55 |
+
}
|
56 |
+
|
57 |
+
$custom_switcher_name = preg_replace( '/^custom_switcher_theme_/', '', $custom_switcher_option );
|
58 |
+
|
59 |
+
$rows[] = array(
|
60 |
+
'Device' => $custom_switcher_name,
|
61 |
+
'Theme' => $options[ 'custom_switcher_theme_' . $custom_switcher_name ],
|
62 |
+
'Slug' => $slug_table[ $options[ 'custom_switcher_theme_' . $custom_switcher_name ] ],
|
63 |
+
'UserAgent' => $options[ 'custom_switcher_userAgent_' . $custom_switcher_name ],
|
64 |
+
);
|
65 |
+
}
|
66 |
+
|
67 |
+
$default_theme = wp_get_theme()->get( 'Name' );
|
68 |
+
$default_theme .= ' | ';
|
69 |
+
$default_theme .= get_stylesheet();
|
70 |
+
WP_CLI::line( 'Active Theme: ' . $default_theme );
|
71 |
+
|
72 |
+
WP_CLI\Utils\format_items( 'table', $rows, array( 'Device', 'Theme', 'Slug', 'UserAgent' ) );
|
73 |
+
|
74 |
+
$line = '';
|
75 |
+
$line .= 'PC Switcher: ';
|
76 |
+
$line .= $options['pc_switcher'] ? 'on' : 'off';
|
77 |
+
$line .= "\n";
|
78 |
+
$line .= 'default CSS: ';
|
79 |
+
$line .= $options['default_css'] ? 'on' : 'off';
|
80 |
+
|
81 |
+
WP_CLI::line( $line );
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* get or switch a theme
|
86 |
+
*
|
87 |
+
* ## OPTIONS
|
88 |
+
*
|
89 |
+
* <device>
|
90 |
+
* : The name of device or Custom Switcher
|
91 |
+
*
|
92 |
+
* [<slug>]
|
93 |
+
* : The slug of theme
|
94 |
+
* input 'None', if you want to without theme
|
95 |
+
*
|
96 |
+
* [--theme=<theme>]
|
97 |
+
* : The name of theme
|
98 |
+
* input 'None', if you want to without theme
|
99 |
+
*
|
100 |
+
* ## EXAMPLES
|
101 |
+
*
|
102 |
+
* # get a theme|slug of smartphone
|
103 |
+
* wp multi-device theme smartphone
|
104 |
+
*
|
105 |
+
* # switch twentyfifteen in theme of smartphone using theme slug
|
106 |
+
* wp multi-device theme smartphone twentyfifteen
|
107 |
+
*
|
108 |
+
* # switch twentyfifteen in theme of smartphone using theme argument
|
109 |
+
* wp multi-device theme smartphone --theme='Twenty Fifteen'
|
110 |
+
*
|
111 |
+
* @synopsis <device> [<slug>] [--theme=<theme>]
|
112 |
+
*/
|
113 |
+
public function theme( $args, $assoc_args ) {
|
114 |
+
$name = isset( $args[0] ) ? $args[0] : null;
|
115 |
+
$slug = isset( $args[1] ) ? $args[1] : null;
|
116 |
+
$theme = isset( $assoc_args['theme'] ) ? $assoc_args['theme'] : null;
|
117 |
+
|
118 |
+
$options = get_option( $this->options );
|
119 |
+
|
120 |
+
if ( isset( $slug ) ) {
|
121 |
+
if ( '' == $slug || 'None' == $slug ) {
|
122 |
+
$theme = 'None';
|
123 |
+
}
|
124 |
+
}
|
125 |
+
|
126 |
+
$slug_table = array( 'None' => '' );
|
127 |
+
$themes = wp_get_themes();
|
128 |
+
foreach ( $themes as $theme_slug => $header ) {
|
129 |
+
$slug_table[ $header->get( 'Name' ) ] = $theme_slug;
|
130 |
+
if ( $slug == $theme_slug ) {
|
131 |
+
$theme = $header->get( 'Name' );
|
132 |
+
}
|
133 |
+
}
|
134 |
+
|
135 |
+
if ( isset( $theme ) ) {
|
136 |
+
$default_theme = wp_get_theme()->get( 'Name' );
|
137 |
+
if ( $default_theme == $theme ) {
|
138 |
+
WP_CLI::error( $theme . ' theme is in active' );
|
139 |
+
}
|
140 |
+
|
141 |
+
if ( ! isset( $slug_table[ $theme ] ) ) {
|
142 |
+
WP_CLI::error( $theme . ' theme is not installed' );
|
143 |
+
}
|
144 |
+
|
145 |
+
if ( in_array( $name, array( 'smartphone', 'smart', 'tablet', 'mobile', 'game' ) ) ) {
|
146 |
+
if ( 'smart' == $name ) {
|
147 |
+
$name = 'smartphone';
|
148 |
+
}
|
149 |
+
$options[ 'theme_' . $name ] = $theme;
|
150 |
+
|
151 |
+
update_option( $this->options, $options );
|
152 |
+
WP_CLI::success( 'switch ' . $name . ' theme to ' . $theme );
|
153 |
+
}
|
154 |
+
else if ( isset( $options[ 'custom_switcher_theme_' . $name ] ) ) {
|
155 |
+
$options[ 'custom_switcher_theme_' . $name ] = $theme;
|
156 |
+
|
157 |
+
update_option( $this->options, $options );
|
158 |
+
WP_CLI::success( 'switch ' . $name . ' theme to ' . $theme );
|
159 |
+
}
|
160 |
+
else {
|
161 |
+
WP_CLI::error( $name . ' don\'t exist' );
|
162 |
+
}
|
163 |
+
}
|
164 |
+
else {
|
165 |
+
if ( in_array( $name, array( 'smartphone', 'smart', 'tablet', 'mobile', 'game' ) ) ) {
|
166 |
+
if ( 'smart' == $name ) {
|
167 |
+
$name = 'smartphone';
|
168 |
+
}
|
169 |
+
WP_CLI::success( $options[ 'theme_' . $name ] . ' | ' . $slug_table[ $options[ 'theme_' . $name ] ] );
|
170 |
+
}
|
171 |
+
else if ( isset( $options[ 'custom_switcher_theme_' . $name ] ) ) {
|
172 |
+
WP_CLI::success( $options[ 'custom_switcher_theme_' . $name ] . ' | ' . $slug_table[ $options[ 'custom_switcher_theme_' . $name ] ] );
|
173 |
+
}
|
174 |
+
else {
|
175 |
+
WP_CLI::error( $name . ' don\'t exist' );
|
176 |
+
}
|
177 |
+
}
|
178 |
+
}
|
179 |
+
|
180 |
+
/**
|
181 |
+
* get or set UserAgent
|
182 |
+
*
|
183 |
+
* ## OPTIONS
|
184 |
+
*
|
185 |
+
* <device>
|
186 |
+
* : The name of device or Custom Switcher
|
187 |
+
*
|
188 |
+
* [<UserAgent>]
|
189 |
+
* : UserAgent
|
190 |
+
* Comma-separated values (csv) format
|
191 |
+
*
|
192 |
+
* ## EXAMPLES
|
193 |
+
*
|
194 |
+
* # get UserAgent of tablet
|
195 |
+
* wp multi-device useragent tablet
|
196 |
+
*
|
197 |
+
* # set UserAgent in theme of tablet
|
198 |
+
* wp multi-device useragent tablet 'iPad, Kindle, Sony Tablet, Nexus 7'
|
199 |
+
*
|
200 |
+
* @synopsis <device> [<UserAgent>]
|
201 |
+
*/
|
202 |
+
public function useragent( $args, $assoc_args ) {
|
203 |
+
$name = isset( $args[0] ) ? $args[0] : null;
|
204 |
+
$useragent = isset( $args[1] ) ? $args[1] : null;
|
205 |
+
|
206 |
+
$options = get_option( $this->options );
|
207 |
+
|
208 |
+
if ( isset( $useragent ) ) {
|
209 |
+
if ( in_array( $name, array( 'smartphone', 'smart', 'tablet', 'mobile', 'game' ) ) ) {
|
210 |
+
if ( 'smartphone' == $name ) {
|
211 |
+
$name = 'smart';
|
212 |
+
}
|
213 |
+
$options[ 'userAgent_' . $name ] = $useragent;
|
214 |
+
|
215 |
+
update_option( $this->options, $options );
|
216 |
+
WP_CLI::success( 'set ' . $name . ' UserAgent to ' . $useragent );
|
217 |
+
}
|
218 |
+
else if ( isset( $options[ 'custom_switcher_theme_' . $name ] ) ) {
|
219 |
+
$options[ 'custom_switcher_userAgent_' . $name ] = $useragent;
|
220 |
+
|
221 |
+
update_option( $this->options, $options );
|
222 |
+
WP_CLI::success( 'set ' . $name . ' UserAgent to ' . $useragent );
|
223 |
+
}
|
224 |
+
else {
|
225 |
+
WP_CLI::error( $name . ' don\'t exist' );
|
226 |
+
}
|
227 |
+
}
|
228 |
+
else {
|
229 |
+
if ( in_array( $name, array( 'smartphone', 'smart', 'tablet', 'mobile', 'game' ) ) ) {
|
230 |
+
if ( 'smartphone' == $name ) {
|
231 |
+
$name = 'smart';
|
232 |
+
}
|
233 |
+
WP_CLI::success( $options[ 'userAgent_' . $name ] );
|
234 |
+
}
|
235 |
+
else if ( isset( $options[ 'custom_switcher_theme_' . $name ] ) ) {
|
236 |
+
WP_CLI::success( $options[ 'custom_switcher_userAgent_' . $name ] );
|
237 |
+
}
|
238 |
+
else {
|
239 |
+
WP_CLI::error( $name . ' don\'t exist' );
|
240 |
+
}
|
241 |
+
}
|
242 |
+
}
|
243 |
+
|
244 |
+
/**
|
245 |
+
* reset Settings to Default UserAgent
|
246 |
+
*
|
247 |
+
* ## EXAMPLES
|
248 |
+
*
|
249 |
+
* wp multi-device reset
|
250 |
+
*
|
251 |
+
* @synopsis
|
252 |
+
*/
|
253 |
+
public function reset( $args, $assoc_args ) {
|
254 |
+
$options = get_option( $this->options );
|
255 |
+
$default_options = multi_device_switcher_get_default_options();
|
256 |
+
|
257 |
+
$options['userAgent_smart'] = $default_options['userAgent_smart'];
|
258 |
+
$options['userAgent_tablet'] = $default_options['userAgent_tablet'];
|
259 |
+
$options['userAgent_mobile'] = $default_options['userAgent_mobile'];
|
260 |
+
$options['userAgent_game'] = $default_options['userAgent_game'];
|
261 |
+
|
262 |
+
update_option( $this->options, $options );
|
263 |
+
WP_CLI::success( 'reset Settings to Default UserAgent' );
|
264 |
+
}
|
265 |
+
|
266 |
+
/**
|
267 |
+
* add Custom Switcher
|
268 |
+
*
|
269 |
+
* ## OPTIONS
|
270 |
+
*
|
271 |
+
* <device>
|
272 |
+
* : The name of Custom Switcher
|
273 |
+
* 20 characters max, alphanumeric
|
274 |
+
*
|
275 |
+
* [<slug>]
|
276 |
+
* : The slug of theme
|
277 |
+
*
|
278 |
+
* [<UserAgent>]
|
279 |
+
* : UserAgent
|
280 |
+
* Comma-separated values (csv) format
|
281 |
+
*
|
282 |
+
* [--theme=<theme>]
|
283 |
+
* : The name of theme
|
284 |
+
*
|
285 |
+
* ## EXAMPLES
|
286 |
+
*
|
287 |
+
* # add example Custom Switcher
|
288 |
+
* wp multi-device add example
|
289 |
+
*
|
290 |
+
* # add example Custom Switcher. set twentyfifteen theme and UserAgent using theme slug
|
291 |
+
* wp multi-device add example twentyfifteen 'iPad, Kindle, Sony Tablet, Nexus 7'
|
292 |
+
*
|
293 |
+
* # add example Custom Switcher. set twentyfifteen theme and UserAgent using theme argument
|
294 |
+
* wp multi-device add example --theme='Twenty Fifteen'
|
295 |
+
*
|
296 |
+
* @synopsis <device> [<slug>] [<UserAgent>] [--theme=<theme>]
|
297 |
+
*/
|
298 |
+
|
299 |
+
public function add( $args, $assoc_args ) {
|
300 |
+
$name = isset( $args[0] ) ? $args[0] : null;
|
301 |
+
$slug = isset( $args[1] ) ? $args[1] : null;
|
302 |
+
$useragent = isset( $args[2] ) ? $args[2] : null;
|
303 |
+
$theme = isset( $assoc_args['theme'] ) ? $assoc_args['theme'] : null;
|
304 |
+
|
305 |
+
if ( ! preg_match( '/^[A-Za-z0-9]{1,20}$/', $name ) ) {
|
306 |
+
WP_CLI::error( '20 characters max, alphanumeric' );
|
307 |
+
}
|
308 |
+
|
309 |
+
$slug_table = array( 'None' => '' );
|
310 |
+
$themes = wp_get_themes();
|
311 |
+
foreach ( $themes as $theme_slug => $header ) {
|
312 |
+
$slug_table[ $header->get( 'Name' ) ] = $theme_slug;
|
313 |
+
if ( ! isset( $assoc_args['theme'] ) && $slug == $theme_slug ) {
|
314 |
+
$theme = $header->get( 'Name' );
|
315 |
+
}
|
316 |
+
}
|
317 |
+
|
318 |
+
$options = get_option( $this->options );
|
319 |
+
if ( in_array( $name, array( 'smartphone', 'smart', 'tablet', 'mobile', 'game' ) ) ) {
|
320 |
+
WP_CLI::error( 'can\'t add Default Switcher' );
|
321 |
+
}
|
322 |
+
else if ( isset( $options[ 'custom_switcher_theme_' . $name ] ) ) {
|
323 |
+
WP_CLI::error( 'Custom Switcher already exists' );
|
324 |
+
}
|
325 |
+
else {
|
326 |
+
$default_theme = wp_get_theme()->get( 'Name' );
|
327 |
+
if ( $default_theme == $theme ) {
|
328 |
+
WP_CLI::error( $theme . ' theme is in active' );
|
329 |
+
}
|
330 |
+
|
331 |
+
if ( isset( $slug ) || isset( $assoc_args['theme'] ) ) {
|
332 |
+
if ( isset( $slug_table[ $theme ] ) ) {
|
333 |
+
$options[ 'custom_switcher_theme_' . $name ] = $theme;
|
334 |
+
}
|
335 |
+
else {
|
336 |
+
WP_CLI::error( $theme . ' theme are not installed' );
|
337 |
+
}
|
338 |
+
}
|
339 |
+
else {
|
340 |
+
$options[ 'custom_switcher_theme_' . $name ] = 'None';
|
341 |
+
}
|
342 |
+
|
343 |
+
$options[ 'custom_switcher_userAgent_' . $name ] = isset( $useragent ) ? $useragent : '';
|
344 |
+
|
345 |
+
update_option( $this->options, $options );
|
346 |
+
WP_CLI::success( 'add ' . $name . ' Custom Switcher' );
|
347 |
+
}
|
348 |
+
}
|
349 |
+
|
350 |
+
/**
|
351 |
+
* delete Custom Switcher
|
352 |
+
*
|
353 |
+
* ## OPTIONS
|
354 |
+
*
|
355 |
+
* <device>
|
356 |
+
* : The name of Custom Switcher
|
357 |
+
*
|
358 |
+
* ## EXAMPLES
|
359 |
+
*
|
360 |
+
* # delete example Custom Switcher
|
361 |
+
* wp multi-device delete example
|
362 |
+
*
|
363 |
+
* @synopsis <device>
|
364 |
+
*/
|
365 |
+
public function delete( $args, $assoc_args ) {
|
366 |
+
$name = isset( $args[0] ) ? $args[0] : null;
|
367 |
+
|
368 |
+
$options = get_option( $this->options );
|
369 |
+
|
370 |
+
if ( in_array( $name, array( 'smartphone', 'smart', 'tablet', 'mobile', 'game' ) ) ) {
|
371 |
+
WP_CLI::error( 'Default Switcher can\'t delete' );
|
372 |
+
}
|
373 |
+
else if ( isset( $options[ 'custom_switcher_theme_' . $name ] ) ) {
|
374 |
+
unset( $options[ 'custom_switcher_theme_' . $name ] );
|
375 |
+
unset( $options[ 'custom_switcher_userAgent_' . $name ] );
|
376 |
+
|
377 |
+
update_option( $this->options, $options );
|
378 |
+
WP_CLI::success( 'delete ' . $name . ' Custom Switcher' );
|
379 |
+
}
|
380 |
+
else {
|
381 |
+
WP_CLI::error( 'Custom Switcher don\'t exist' );
|
382 |
+
}
|
383 |
+
}
|
384 |
+
|
385 |
+
/**
|
386 |
+
* turn on/off PC Switcher
|
387 |
+
*
|
388 |
+
* ## OPTIONS
|
389 |
+
*
|
390 |
+
* <flag>
|
391 |
+
* : on
|
392 |
+
* off
|
393 |
+
*
|
394 |
+
* ## EXAMPLES
|
395 |
+
*
|
396 |
+
* # turn on PC Switcher
|
397 |
+
* wp multi-device pc-switcher on
|
398 |
+
*
|
399 |
+
* # turn off PC Switcher
|
400 |
+
* wp multi-device pc-switcher off
|
401 |
+
*
|
402 |
+
* @synopsis <flag>
|
403 |
+
* @subcommand pc-switcher
|
404 |
+
*/
|
405 |
+
public function pc_switcher( $args, $assoc_args ) {
|
406 |
+
$flag = isset( $args[0] ) ? $args[0] : null;
|
407 |
+
|
408 |
+
$options = get_option( $this->options );
|
409 |
+
|
410 |
+
if ( 'on' == $flag ) {
|
411 |
+
$options['pc_switcher'] = 1;
|
412 |
+
update_option( $this->options, $options );
|
413 |
+
WP_CLI::success( 'turn on PC Switcher' );
|
414 |
+
}
|
415 |
+
else if ( 'off' == $flag ) {
|
416 |
+
$options['pc_switcher'] = 0;
|
417 |
+
update_option( $this->options, $options );
|
418 |
+
WP_CLI::success( 'turn off PC Switcher' );
|
419 |
+
}
|
420 |
+
else {
|
421 |
+
WP_CLI::error( 'Invalid flag' );
|
422 |
+
}
|
423 |
+
}
|
424 |
+
|
425 |
+
/**
|
426 |
+
* turn on/off default CSS
|
427 |
+
*
|
428 |
+
* ## OPTIONS
|
429 |
+
*
|
430 |
+
* <flag>
|
431 |
+
* : on
|
432 |
+
* off
|
433 |
+
*
|
434 |
+
* ## EXAMPLES
|
435 |
+
*
|
436 |
+
* # turn on default CSS
|
437 |
+
* wp multi-device css on
|
438 |
+
*
|
439 |
+
* # turn off default CSS
|
440 |
+
* wp multi-device css off
|
441 |
+
*
|
442 |
+
* @synopsis <flag>
|
443 |
+
*/
|
444 |
+
public function css( $args, $assoc_args ) {
|
445 |
+
$flag = isset( $args[0] ) ? $args[0] : null;
|
446 |
+
|
447 |
+
$options = get_option( $this->options );
|
448 |
+
|
449 |
+
if ( 'on' == $flag ) {
|
450 |
+
$options['default_css'] = 1;
|
451 |
+
update_option( $this->options, $options );
|
452 |
+
WP_CLI::success( 'turn on default CSS' );
|
453 |
+
}
|
454 |
+
else if ( 'off' == $flag ) {
|
455 |
+
$options['default_css'] = 0;
|
456 |
+
update_option( $this->options, $options );
|
457 |
+
WP_CLI::success( 'turn off default CSS' );
|
458 |
+
}
|
459 |
+
else {
|
460 |
+
WP_CLI::error( 'Invalid flag' );
|
461 |
+
}
|
462 |
+
}
|
463 |
+
}
|
464 |
+
|
465 |
+
WP_CLI::add_command( 'multi-device', 'Multi_Device_Switcher_Command' );
|