免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2276 | 回复: 1
打印 上一主题 下一主题

wordpress后台添加多套style文件切换 style switcher [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-15 15:54 |只看该作者 |倒序浏览
wordpress后台添加多套style文件切换 style switcher








项目需求:

1.添加多套style文件不定期 切换风格

2.后台方便切换管理



插件实现

步骤1.

在当前的主题文件下找到functions.php文件 没有的话自己写一个

copy如下代码到文件

Php代码
  1. 1.$themename = "My theme";   
  2. 2.$shortname = "MT";   
  3. 3.$options = array (   
  4. 4.array( "name" => "Style Sheet",   
  5. 5.    "desc" => "Enter the Style Sheet you would like to use for Sweet Ass Theme",   
  6. 6.    "id" => $shortname."_style_sheet",   
  7. 7.    "type" => "select",   
  8. 8.    "options" => array("default", "green", "blue", "yellow"),   
  9. 9.    "std" => "default"),   
  10. 10.);   
  11. 11.  
  12. 12.//presentation//   
  13. 13.  
  14. 14.function mytheme_add_admin() {   
  15. 15.   
  16. 16.global $themename, $shortname, $options;   
  17. 17.   
  18. 18.if ( $_GET['page'] == basename(__FILE__) ) {   
  19. 19.   
  20. 20.if ( 'save' == $_REQUEST['action'] ) {   
  21. 21.   
  22. 22.foreach ($options as $value) {   
  23. 23.update_option( $value['id'], $_REQUEST[ $value['id'] ] ); }   
  24. 24.   
  25. 25.foreach ($options as $value) {   
  26. 26.if( isset( $_REQUEST[ $value['id'] ] ) ) { update_option( $value['id'], $_REQUEST[ $value['id'] ]  ); } else { delete_option( $value['id'] ); } }   
  27. 27.   
  28. 28.header("Location: themes.php?page=functions.php&saved=true");   
  29. 29.die;   
  30. 30.   
  31. 31.} else if( 'reset' == $_REQUEST['action'] ) {   
  32. 32.   
  33. 33.foreach ($options as $value) {   
  34. 34.delete_option( $value['id'] ); }   
  35. 35.   
  36. 36.header("Location: themes.php?page=functions.php&reset=true");   
  37. 37.die;   
  38. 38.   
  39. 39.}   
  40. 40.}   
  41. 41.   
  42. 42.add_theme_page($themename." Options", "".$themename." Options", 'edit_themes', basename(__FILE__), 'mytheme_admin');   
  43. 43.   
  44. 44.}   
  45. 45.   
  46. 46.function mytheme_admin() {   
  47. 47.   
  48. 48.global $themename, $shortname, $options;   
  49. 49.   
  50. 50.if ( $_REQUEST['saved'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings saved.</strong></p></div>';   
  51. 51.if ( $_REQUEST['reset'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings reset.</strong></p></div>';   
  52. 52.   
  53. 53.?>   
  54. 54.<div class="wrap">   
  55. 55.<h2><?php echo $themename; ?> Settings</h2>   
  56. 56.   
  57. 57.<form method="post">   
  58. 58.   
  59. 59.<?php foreach ($options as $value) {   
  60. 60.switch ( $value['type'] ) {   
  61. 61.   
  62. 62.case "open":   
  63. 63.?>   
  64. 64.<table width="100%" border="0" style="background-color:#eef5fb; padding:10px;">   
  65. 65.   
  66. 66.<?php break;   
  67. 67.   
  68. 68.case "close":   
  69. 69.?>   
  70. 70.   
  71. 71.</table><br />   
  72. 72.   
  73. 73.<?php break;   
  74. 74.   
  75. 75.case "title":   
  76. 76.?>   
  77. 77.<table width="100%" border="0" style="background-color:#dceefc; padding:5px 10px;"><tr>   
  78. 78.<td valign="top" colspan="2"><h3 style="font-family:Georgia,'Times New Roman',Times,serif;"><?php echo $value['name']; ?></h3></td>   
  79. 79.</tr>   
  80. 80.  
  81. 81.<!--custom-->   
  82. 82.   
  83. 83.   
  84. 84.<?php break;   
  85. 85.case "sub-title":   
  86. 86.?>   
  87. 87.<h3 style="font-family:Georgia,'Times New Roman',Times,serif; padding-left:8px;"><?php echo $value['name']; ?></h3>   
  88. 88.<!--end-of-custom-->   
  89. 89.   
  90. 90.   
  91. 91.<?php break;   
  92. 92.   
  93. 93.case 'text':   
  94. 94.?>   
  95. 95.   
  96. 96.<tr>   
  97. 97.<td valign="top" width="20%" rowspan="2" valign="middle"><strong><?php echo $value['name']; ?></strong></td>   
  98. 98.<td width="80%"><input style="width:400px;" name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" type="<?php echo $value['type']; ?>" value="<?php if ( get_settings( $value['id'] ) != "") { echo get_settings( $value['id'] ); } else { echo $value['std']; } ?>" /></td>   
  99. 99.</tr>   
  100. 100.   
  101. 101.<tr>   
  102. 102.<td><small><?php echo $value['desc']; ?></small></td>   
  103. 103.</tr><tr><td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;">&nbsp;</td></tr><tr><td colspan="2">&nbsp;</td></tr>   
  104. 104.   
  105. 105.<?php   
  106. 106.break;   
  107. 107.   
  108. 108.case 'textarea':   
  109. 109.?>   
  110. 110.   
  111. 111.<tr>   
  112. 112.<td valign="top" width="20%" rowspan="2" valign="middle"><strong><?php echo $value['name']; ?></strong></td>   
  113. 113.<td width="80%"><textarea name="<?php echo $value['id']; ?>" style="width:400px; height:200px;" type="<?php echo $value['type']; ?>" cols="" rows=""><?php if ( get_settings( $value['id'] ) != "") { echo get_settings( $value['id'] ); } else { echo $value['std']; } ?></textarea></td>   
  114. 114.   
  115. 115.</tr>   
  116. 116.   
  117. 117.<tr>   
  118. 118.<td><small><?php echo $value['desc']; ?></small></td>   
  119. 119.</tr><tr><td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;">&nbsp;</td></tr><tr><td colspan="2">&nbsp;</td></tr>   
  120. 120.   
  121. 121.<?php   
  122. 122.break;   
  123. 123.   
  124. 124.case 'select':   
  125. 125.?>   
  126. 126.<tr>   
  127. 127.<td width="20%" rowspan="2" valign="middle"><strong><?php echo $value['name']; ?></strong></td>   
  128. 128.<td width="80%"><select style="width:240px;" name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>"><?php foreach ($value['options'] as $option) { ?><option<?php if ( get_settings( $value['id'] ) == $option) { echo ' selected="selected"'; } elseif ($option == $value['std']) { echo ' selected="selected"'; } ?>><?php echo $option; ?></option><?php } ?></select></td>   
  129. 129.</tr>   
  130. 130.   
  131. 131.<tr>   
  132. 132.<td><small><?php echo $value['desc']; ?></small></td>   
  133. 133.</tr><tr><td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;">&nbsp;</td></tr><tr><td colspan="2">&nbsp;</td></tr>   
  134. 134.   
  135. 135.<?php   
  136. 136.break;   
  137. 137.   
  138. 138.case "checkbox":   
  139. 139.?>   
  140. 140.<tr>   
  141. 141.<td width="20%" rowspan="2" valign="middle"><strong><?php echo $value['name']; ?></strong></td>   
  142. 142.<td width="80%"><?php if(get_option($value['id'])){ $checked = "checked=\"checked\""; }else{ $checked = "";} ?>   
  143. 143.<input type="checkbox" name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" value="true" <?php echo $checked; ?> />   
  144. 144.</td>   
  145. 145.</tr>   
  146. 146.   
  147. 147.<tr>   
  148. 148.<td><small><?php echo $value['desc']; ?></small></td>   
  149. 149.</tr><tr><td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;">&nbsp;</td></tr><tr><td colspan="2">&nbsp;</td></tr>   
  150. 150.   
  151. 151.<?php break;   
  152. 152.   
  153. 153.}   
  154. 154.}   
  155. 155.?>   
  156. 156.   
  157. 157.<p class="submit">   
  158. 158.<input name="save" type="submit" value="Save changes" />   
  159. 159.<input type="hidden" name="action" value="save" />   
  160. 160.</p>   
  161. 161.</form>   
  162. 162.<form method="post">   
  163. 163.<p class="submit">   
  164. 164.<input name="reset" type="submit" value="Reset" />   
  165. 165.<input type="hidden" name="action" value="reset" />   
  166. 166.</p>   
  167. 167.</form>   
  168. 168.   
  169. 169.<?php   
  170. 170.}   
  171. 171.add_action('admin_menu', 'mytheme_add_admin');  
  172. $themename = "My theme";
  173. $shortname = "MT";
  174. $options = array (
  175. array( "name" => "Style Sheet",
  176.         "desc" => "Enter the Style Sheet you would like to use for Sweet Ass Theme",
  177.         "id" => $shortname."_style_sheet",
  178.         "type" => "select",
  179.         "options" => array("default", "green", "blue", "yellow"),
  180.         "std" => "default"),
  181. );

  182. //presentation//

  183. function mytheme_add_admin() {

  184. global $themename, $shortname, $options;

  185. if ( $_GET['page'] == basename(__FILE__) ) {

  186. if ( 'save' == $_REQUEST['action'] ) {

  187. foreach ($options as $value) {
  188. update_option( $value['id'], $_REQUEST[ $value['id'] ] ); }

  189. foreach ($options as $value) {
  190. if( isset( $_REQUEST[ $value['id'] ] ) ) { update_option( $value['id'], $_REQUEST[ $value['id'] ]  ); } else { delete_option( $value['id'] ); } }

  191. header("Location: themes.php?page=functions.php&saved=true");
  192. die;

  193. } else if( 'reset' == $_REQUEST['action'] ) {

  194. foreach ($options as $value) {
  195. delete_option( $value['id'] ); }

  196. header("Location: themes.php?page=functions.php&reset=true");
  197. die;

  198. }
  199. }

  200. add_theme_page($themename." Options", "".$themename." Options", 'edit_themes', basename(__FILE__), 'mytheme_admin');

  201. }

  202. function mytheme_admin() {

  203. global $themename, $shortname, $options;

  204. if ( $_REQUEST['saved'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings saved.</strong></p></div>';
  205. if ( $_REQUEST['reset'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings reset.</strong></p></div>';

  206. ?>
  207. <div class="wrap">
  208. <h2><?php echo $themename; ?> Settings</h2>

  209. <form method="post">

  210. <?php foreach ($options as $value) {
  211. switch ( $value['type'] ) {

  212. case "open":
  213. ?>
  214. <table width="100%" border="0" style="background-color:#eef5fb; padding:10px;">

  215. <?php break;

  216. case "close":
  217. ?>

  218. </table><br />

  219. <?php break;

  220. case "title":
  221. ?>
  222. <table width="100%" border="0" style="background-color:#dceefc; padding:5px 10px;"><tr>
  223. <td valign="top" colspan="2"><h3 style="font-family:Georgia,'Times New Roman',Times,serif;"><?php echo $value['name']; ?></h3></td>
  224. </tr>

  225. <!--custom-->


  226. <?php break;
  227. case "sub-title":
  228. ?>
  229. <h3 style="font-family:Georgia,'Times New Roman',Times,serif; padding-left:8px;"><?php echo $value['name']; ?></h3>
  230. <!--end-of-custom-->


  231. <?php break;

  232. case 'text':
  233. ?>

  234. <tr>
  235. <td valign="top" width="20%" rowspan="2" valign="middle"><strong><?php echo $value['name']; ?></strong></td>
  236. <td width="80%"><input style="width:400px;" name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" type="<?php echo $value['type']; ?>" value="<?php if ( get_settings( $value['id'] ) != "") { echo get_settings( $value['id'] ); } else { echo $value['std']; } ?>" /></td>
  237. </tr>

  238. <tr>
  239. <td><small><?php echo $value['desc']; ?></small></td>
  240. </tr><tr><td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;">&nbsp;</td></tr><tr><td colspan="2">&nbsp;</td></tr>

  241. <?php
  242. break;

  243. case 'textarea':
  244. ?>

  245. <tr>
  246. <td valign="top" width="20%" rowspan="2" valign="middle"><strong><?php echo $value['name']; ?></strong></td>
  247. <td width="80%"><textarea name="<?php echo $value['id']; ?>" style="width:400px; height:200px;" type="<?php echo $value['type']; ?>" cols="" rows=""><?php if ( get_settings( $value['id'] ) != "") { echo get_settings( $value['id'] ); } else { echo $value['std']; } ?></textarea></td>

  248. </tr>

  249. <tr>
  250. <td><small><?php echo $value['desc']; ?></small></td>
  251. </tr><tr><td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;">&nbsp;</td></tr><tr><td colspan="2">&nbsp;</td></tr>

  252. <?php
  253. break;

  254. case 'select':
  255. ?>
  256. <tr>
  257. <td width="20%" rowspan="2" valign="middle"><strong><?php echo $value['name']; ?></strong></td>
  258. <td width="80%"><select style="width:240px;" name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>"><?php foreach ($value['options'] as $option) { ?><option<?php if ( get_settings( $value['id'] ) == $option) { echo ' selected="selected"'; } elseif ($option == $value['std']) { echo ' selected="selected"'; } ?>><?php echo $option; ?></option><?php } ?></select></td>
  259. </tr>

  260. <tr>
  261. <td><small><?php echo $value['desc']; ?></small></td>
  262. </tr><tr><td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;">&nbsp;</td></tr><tr><td colspan="2">&nbsp;</td></tr>

  263. <?php
  264. break;

  265. case "checkbox":
  266. ?>
  267. <tr>
  268. <td width="20%" rowspan="2" valign="middle"><strong><?php echo $value['name']; ?></strong></td>
  269. <td width="80%"><?php if(get_option($value['id'])){ $checked = "checked=\"checked\""; }else{ $checked = "";} ?>
  270. <input type="checkbox" name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" value="true" <?php echo $checked; ?> />
  271. </td>
  272. </tr>

  273. <tr>
  274. <td><small><?php echo $value['desc']; ?></small></td>
  275. </tr><tr><td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;">&nbsp;</td></tr><tr><td colspan="2">&nbsp;</td></tr>

  276. <?php break;

  277. }
  278. }
  279. ?>

  280. <p class="submit">
  281. <input name="save" type="submit" value="Save changes" />
  282. <input type="hidden" name="action" value="save" />
  283. </p>
  284. </form>
  285. <form method="post">
  286. <p class="submit">
  287. <input name="reset" type="submit" value="Reset" />
  288. <input type="hidden" name="action" value="reset" />
  289. </p>
  290. </form>

  291. <?php
  292. }
  293. add_action('admin_menu', 'mytheme_add_admin');
复制代码
步骤2

添加如下代码到header.php文件 替换掉原来的style.css加载文件 实现与前台的衔接



Html代码
  1. 1.<?php  
  2. 2.    global $options;   
  3. 3.    foreach ($options as $value) {   
  4. 4.        if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings( $value['id'] ); }   
  5. 5.    }   
  6. 6.    ?>              
  7. 7.    <?php switch ($mst_style_sheet) {   
  8. 8.         case "default":?>  
  9. 9.        <link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />  
  10. 10.    <?php break; ?>      
  11. 11.    <?php case "green":?>  
  12. 12.        <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/green.css" type="text/css" media="screen" />  
  13. 13.    <?php break; ?>  
  14. 14.    <?php case "blue":?>  
  15. 15.        <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/blue.css" type="text/css" media="screen" />  
  16. 16.    <?php break; ?>  
  17. 17.    <?php case "yellow":?>  
  18. 18.        <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/yellow.css" type="text/css" media="screen" />  
  19. 19.    <?php break; ?>      
  20. 20.    <?php }?>  
  21. 21.?>  
  22. <?php
  23.         global $options;
  24.         foreach ($options as $value) {
  25.                 if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings( $value['id'] ); }
  26.         }
  27.         ?>                       
  28.         <?php switch ($mst_style_sheet) {
  29.                  case "default":?>
  30.                 <link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
  31.         <?php break; ?>       
  32.         <?php case "green":?>
  33.                 <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/green.css" type="text/css" media="screen" />
  34.         <?php break; ?>
  35.         <?php case "blue":?>
  36.                 <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/blue.css" type="text/css" media="screen" />
  37.         <?php break; ?>
  38.         <?php case "yellow":?>
  39.                 <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/yellow.css" type="text/css" media="screen" />
  40.         <?php break; ?>       
  41.         <?php }?>
  42. ?>
复制代码
步骤3.

部署文件

将不同套的green.css blue.css yellow.css 文件加到与style.css相同的路径下



步骤4.

在后台切换 保存后 查看效果



扩展:

前台切换 可以参考

http://www.dynamicdrive.com/dynamicindex9/stylesheetswitcher.htm

论坛徽章:
0
2 [报告]
发表于 2012-03-15 15:55 |只看该作者
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP