- 论坛徽章:
- 0
|
wordpress后台添加多套style文件切换 style switcher
项目需求:
1.添加多套style文件不定期 切换风格
2.后台方便切换管理
插件实现
步骤1.
在当前的主题文件下找到functions.php文件 没有的话自己写一个
copy如下代码到文件
Php代码- 1.$themename = "My theme";
- 2.$shortname = "MT";
- 3.$options = array (
- 4.array( "name" => "Style Sheet",
- 5. "desc" => "Enter the Style Sheet you would like to use for Sweet Ass Theme",
- 6. "id" => $shortname."_style_sheet",
- 7. "type" => "select",
- 8. "options" => array("default", "green", "blue", "yellow"),
- 9. "std" => "default"),
- 10.);
- 11.
- 12.//presentation//
- 13.
- 14.function mytheme_add_admin() {
- 15.
- 16.global $themename, $shortname, $options;
- 17.
- 18.if ( $_GET['page'] == basename(__FILE__) ) {
- 19.
- 20.if ( 'save' == $_REQUEST['action'] ) {
- 21.
- 22.foreach ($options as $value) {
- 23.update_option( $value['id'], $_REQUEST[ $value['id'] ] ); }
- 24.
- 25.foreach ($options as $value) {
- 26.if( isset( $_REQUEST[ $value['id'] ] ) ) { update_option( $value['id'], $_REQUEST[ $value['id'] ] ); } else { delete_option( $value['id'] ); } }
- 27.
- 28.header("Location: themes.php?page=functions.php&saved=true");
- 29.die;
- 30.
- 31.} else if( 'reset' == $_REQUEST['action'] ) {
- 32.
- 33.foreach ($options as $value) {
- 34.delete_option( $value['id'] ); }
- 35.
- 36.header("Location: themes.php?page=functions.php&reset=true");
- 37.die;
- 38.
- 39.}
- 40.}
- 41.
- 42.add_theme_page($themename." Options", "".$themename." Options", 'edit_themes', basename(__FILE__), 'mytheme_admin');
- 43.
- 44.}
- 45.
- 46.function mytheme_admin() {
- 47.
- 48.global $themename, $shortname, $options;
- 49.
- 50.if ( $_REQUEST['saved'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings saved.</strong></p></div>';
- 51.if ( $_REQUEST['reset'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings reset.</strong></p></div>';
- 52.
- 53.?>
- 54.<div class="wrap">
- 55.<h2><?php echo $themename; ?> Settings</h2>
- 56.
- 57.<form method="post">
- 58.
- 59.<?php foreach ($options as $value) {
- 60.switch ( $value['type'] ) {
- 61.
- 62.case "open":
- 63.?>
- 64.<table width="100%" border="0" style="background-color:#eef5fb; padding:10px;">
- 65.
- 66.<?php break;
- 67.
- 68.case "close":
- 69.?>
- 70.
- 71.</table><br />
- 72.
- 73.<?php break;
- 74.
- 75.case "title":
- 76.?>
- 77.<table width="100%" border="0" style="background-color:#dceefc; padding:5px 10px;"><tr>
- 78.<td valign="top" colspan="2"><h3 style="font-family:Georgia,'Times New Roman',Times,serif;"><?php echo $value['name']; ?></h3></td>
- 79.</tr>
- 80.
- 81.<!--custom-->
- 82.
- 83.
- 84.<?php break;
- 85.case "sub-title":
- 86.?>
- 87.<h3 style="font-family:Georgia,'Times New Roman',Times,serif; padding-left:8px;"><?php echo $value['name']; ?></h3>
- 88.<!--end-of-custom-->
- 89.
- 90.
- 91.<?php break;
- 92.
- 93.case 'text':
- 94.?>
- 95.
- 96.<tr>
- 97.<td valign="top" width="20%" rowspan="2" valign="middle"><strong><?php echo $value['name']; ?></strong></td>
- 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.</tr>
- 100.
- 101.<tr>
- 102.<td><small><?php echo $value['desc']; ?></small></td>
- 103.</tr><tr><td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;"> </td></tr><tr><td colspan="2"> </td></tr>
- 104.
- 105.<?php
- 106.break;
- 107.
- 108.case 'textarea':
- 109.?>
- 110.
- 111.<tr>
- 112.<td valign="top" width="20%" rowspan="2" valign="middle"><strong><?php echo $value['name']; ?></strong></td>
- 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.
- 115.</tr>
- 116.
- 117.<tr>
- 118.<td><small><?php echo $value['desc']; ?></small></td>
- 119.</tr><tr><td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;"> </td></tr><tr><td colspan="2"> </td></tr>
- 120.
- 121.<?php
- 122.break;
- 123.
- 124.case 'select':
- 125.?>
- 126.<tr>
- 127.<td width="20%" rowspan="2" valign="middle"><strong><?php echo $value['name']; ?></strong></td>
- 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.</tr>
- 130.
- 131.<tr>
- 132.<td><small><?php echo $value['desc']; ?></small></td>
- 133.</tr><tr><td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;"> </td></tr><tr><td colspan="2"> </td></tr>
- 134.
- 135.<?php
- 136.break;
- 137.
- 138.case "checkbox":
- 139.?>
- 140.<tr>
- 141.<td width="20%" rowspan="2" valign="middle"><strong><?php echo $value['name']; ?></strong></td>
- 142.<td width="80%"><?php if(get_option($value['id'])){ $checked = "checked=\"checked\""; }else{ $checked = "";} ?>
- 143.<input type="checkbox" name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" value="true" <?php echo $checked; ?> />
- 144.</td>
- 145.</tr>
- 146.
- 147.<tr>
- 148.<td><small><?php echo $value['desc']; ?></small></td>
- 149.</tr><tr><td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;"> </td></tr><tr><td colspan="2"> </td></tr>
- 150.
- 151.<?php break;
- 152.
- 153.}
- 154.}
- 155.?>
- 156.
- 157.<p class="submit">
- 158.<input name="save" type="submit" value="Save changes" />
- 159.<input type="hidden" name="action" value="save" />
- 160.</p>
- 161.</form>
- 162.<form method="post">
- 163.<p class="submit">
- 164.<input name="reset" type="submit" value="Reset" />
- 165.<input type="hidden" name="action" value="reset" />
- 166.</p>
- 167.</form>
- 168.
- 169.<?php
- 170.}
- 171.add_action('admin_menu', 'mytheme_add_admin');
- $themename = "My theme";
- $shortname = "MT";
- $options = array (
- array( "name" => "Style Sheet",
- "desc" => "Enter the Style Sheet you would like to use for Sweet Ass Theme",
- "id" => $shortname."_style_sheet",
- "type" => "select",
- "options" => array("default", "green", "blue", "yellow"),
- "std" => "default"),
- );
- //presentation//
- function mytheme_add_admin() {
-
- global $themename, $shortname, $options;
-
- if ( $_GET['page'] == basename(__FILE__) ) {
-
- if ( 'save' == $_REQUEST['action'] ) {
-
- foreach ($options as $value) {
- update_option( $value['id'], $_REQUEST[ $value['id'] ] ); }
-
- foreach ($options as $value) {
- if( isset( $_REQUEST[ $value['id'] ] ) ) { update_option( $value['id'], $_REQUEST[ $value['id'] ] ); } else { delete_option( $value['id'] ); } }
-
- header("Location: themes.php?page=functions.php&saved=true");
- die;
-
- } else if( 'reset' == $_REQUEST['action'] ) {
-
- foreach ($options as $value) {
- delete_option( $value['id'] ); }
-
- header("Location: themes.php?page=functions.php&reset=true");
- die;
-
- }
- }
-
- add_theme_page($themename." Options", "".$themename." Options", 'edit_themes', basename(__FILE__), 'mytheme_admin');
-
- }
-
- function mytheme_admin() {
-
- global $themename, $shortname, $options;
-
- if ( $_REQUEST['saved'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings saved.</strong></p></div>';
- if ( $_REQUEST['reset'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings reset.</strong></p></div>';
-
- ?>
- <div class="wrap">
- <h2><?php echo $themename; ?> Settings</h2>
-
- <form method="post">
-
- <?php foreach ($options as $value) {
- switch ( $value['type'] ) {
-
- case "open":
- ?>
- <table width="100%" border="0" style="background-color:#eef5fb; padding:10px;">
-
- <?php break;
-
- case "close":
- ?>
-
- </table><br />
-
- <?php break;
-
- case "title":
- ?>
- <table width="100%" border="0" style="background-color:#dceefc; padding:5px 10px;"><tr>
- <td valign="top" colspan="2"><h3 style="font-family:Georgia,'Times New Roman',Times,serif;"><?php echo $value['name']; ?></h3></td>
- </tr>
- <!--custom-->
-
-
- <?php break;
- case "sub-title":
- ?>
- <h3 style="font-family:Georgia,'Times New Roman',Times,serif; padding-left:8px;"><?php echo $value['name']; ?></h3>
- <!--end-of-custom-->
-
-
- <?php break;
-
- case 'text':
- ?>
-
- <tr>
- <td valign="top" width="20%" rowspan="2" valign="middle"><strong><?php echo $value['name']; ?></strong></td>
- <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>
- </tr>
-
- <tr>
- <td><small><?php echo $value['desc']; ?></small></td>
- </tr><tr><td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;"> </td></tr><tr><td colspan="2"> </td></tr>
-
- <?php
- break;
-
- case 'textarea':
- ?>
-
- <tr>
- <td valign="top" width="20%" rowspan="2" valign="middle"><strong><?php echo $value['name']; ?></strong></td>
- <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>
-
- </tr>
-
- <tr>
- <td><small><?php echo $value['desc']; ?></small></td>
- </tr><tr><td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;"> </td></tr><tr><td colspan="2"> </td></tr>
-
- <?php
- break;
-
- case 'select':
- ?>
- <tr>
- <td width="20%" rowspan="2" valign="middle"><strong><?php echo $value['name']; ?></strong></td>
- <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>
- </tr>
-
- <tr>
- <td><small><?php echo $value['desc']; ?></small></td>
- </tr><tr><td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;"> </td></tr><tr><td colspan="2"> </td></tr>
-
- <?php
- break;
-
- case "checkbox":
- ?>
- <tr>
- <td width="20%" rowspan="2" valign="middle"><strong><?php echo $value['name']; ?></strong></td>
- <td width="80%"><?php if(get_option($value['id'])){ $checked = "checked=\"checked\""; }else{ $checked = "";} ?>
- <input type="checkbox" name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" value="true" <?php echo $checked; ?> />
- </td>
- </tr>
-
- <tr>
- <td><small><?php echo $value['desc']; ?></small></td>
- </tr><tr><td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;"> </td></tr><tr><td colspan="2"> </td></tr>
-
- <?php break;
-
- }
- }
- ?>
-
- <p class="submit">
- <input name="save" type="submit" value="Save changes" />
- <input type="hidden" name="action" value="save" />
- </p>
- </form>
- <form method="post">
- <p class="submit">
- <input name="reset" type="submit" value="Reset" />
- <input type="hidden" name="action" value="reset" />
- </p>
- </form>
-
- <?php
- }
- add_action('admin_menu', 'mytheme_add_admin');
复制代码 步骤2
添加如下代码到header.php文件 替换掉原来的style.css加载文件 实现与前台的衔接
Html代码- 1.<?php
- 2. global $options;
- 3. foreach ($options as $value) {
- 4. if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings( $value['id'] ); }
- 5. }
- 6. ?>
- 7. <?php switch ($mst_style_sheet) {
- 8. case "default":?>
- 9. <link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
- 10. <?php break; ?>
- 11. <?php case "green":?>
- 12. <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/green.css" type="text/css" media="screen" />
- 13. <?php break; ?>
- 14. <?php case "blue":?>
- 15. <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/blue.css" type="text/css" media="screen" />
- 16. <?php break; ?>
- 17. <?php case "yellow":?>
- 18. <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/yellow.css" type="text/css" media="screen" />
- 19. <?php break; ?>
- 20. <?php }?>
- 21.?>
- <?php
- global $options;
- foreach ($options as $value) {
- if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings( $value['id'] ); }
- }
- ?>
- <?php switch ($mst_style_sheet) {
- case "default":?>
- <link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
- <?php break; ?>
- <?php case "green":?>
- <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/green.css" type="text/css" media="screen" />
- <?php break; ?>
- <?php case "blue":?>
- <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/blue.css" type="text/css" media="screen" />
- <?php break; ?>
- <?php case "yellow":?>
- <link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/yellow.css" type="text/css" media="screen" />
- <?php break; ?>
- <?php }?>
- ?>
复制代码 步骤3.
部署文件
将不同套的green.css blue.css yellow.css 文件加到与style.css相同的路径下
步骤4.
在后台切换 保存后 查看效果
扩展:
前台切换 可以参考
http://www.dynamicdrive.com/dynamicindex9/stylesheetswitcher.htm
|
|