1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

如何给WordPress主题添加独立的控制选项

本帖由 feeloon2012-11-21 发布。版面名称:源码讨论

  1. feeloon

    feeloon New Member

    注册:
    2012-10-23
    帖子:
    32
    赞:
    0
    如果您是wordpress主题控的话,都知道有一些主题都会有自己专属的主题控制选项,这类照片主题占大部分,因为要添加幻灯片等一些功能,所以集成在一个地方控制,管理非常方便灵活。如下图

    如何给Wordpress主题添加独立的控制选项 image00122 150x150

    但是只有部分主题才有这样的功能,但不是每款我们喜欢的主题都有这样的功能,怎么办呢?所以如果你想给任意一款wordpress主题,添加独立控制选项这个功能,就请你阅读下面由无忧主机([51php.com)小编为大家介绍如何来实现这个功能。

    在本地新建一个记事本,把下列代码复制到里面。
    1 <?php
    2 $themename = "XXX主题"; //主题名称
    3 $shortname = "jiuchuangzhuti"; //主题简写,必须是英文、数字、下划线组合
    4 $options = array (
    5 array("name" => "这里是大标题","type" => "heading","desc" => "这里是描述信息"),
    6 array("name" => "这里是小标题","id" => $shortname."_test","std" => "这里是默认值","type" => "text")
    7 );
    8 function mytheme_add_admin() {
    9 global $themename, $shortname, $options;
    10 if ( $_GET['page'] == basename(__FILE__) ) {
    11 if ( 'save' == $_REQUEST['action'] ) {
    12 foreach ($options as $value) {
    13 update_option( $value['id'], $_REQUEST[ $value['id'] ] ); }
    14 foreach ($options as $value) {
    15 if( isset( $_REQUEST[ $value['id'] ] ) ) { update_option( $value['id'], $_REQUEST[ $value['id'] ] ); } else { delete_option( $value['id'] ); } }
    16 //这里的 settings.php 就是这个文件的名称
    17 header("Location: themes.php?page=settings.php&saved=true");
    18 die;
    19 } else if( 'reset' == $_REQUEST['action'] ) {
    20 foreach ($options as $value) {
    21 delete_option( $value['id'] );
    22 update_option( $value['id'], $value['std'] );
    23 }
    24 header("Location: themes.php?page=settings.php&reset=true"); //这里的 settings.php 就是这个文件的名称
    25 die;
    26 }
    27 }
    28 add_theme_page($themename." Options", "$themename 设置", 'edit_themes', basename(__FILE__), 'mytheme_admin');
    29 }
    30 function mytheme_admin() {
    31 global $themename, $shortname, $options;
    32 if ( $_REQUEST['saved'] ) echo '<div id="message"><p><strong>'.$themename.' 设置已保存。</strong></p></div>';
    33 if ( $_REQUEST['reset'] ) echo '<div id="message"><p><strong>'.$themename.' 设置已重置。</strong></p></div>';
    34 ?>
    35 <style type="text/css">
    36 th{text-align:left;}
    37 input{width:100%;}
    38 .submit{width:100px;padding:0;}
    39 .defaultbutton{padding-left:745px;}
    40 </style>
    41 <div>
    42 <h2><b><?php echo $themename; ?> 设置</b></h2>
    43 <form method="post">
    44 <div style="padding:0;">
    45 <input style="font-size:12px !important;" name="save" type="submit" value="保存设置" />
    46 <input type="hidden" name="action" value="save" />
    47 </div>
    48 <table >
    49 <?php foreach ($options as $value) {
    50 if ($value['type'] == "text") { ?>
    51 <tr align="left">
    52 <th scope="row"><?php echo $value['name']; ?>:</th>
    53 <td>
    54 <input 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']; } ?>" size="40" />
    55 </td>
    56 </tr>
    57 <?php } elseif ($value['type'] == "heading") { ?>
    58 <tr valign="top">
    59 <td colspan="2" style="text-align: left;"><hr />
    60 <h2 style="color:green;"><?php echo $value['name']; ?></h2></td>
    61 <tr><td colspan=2> <p style="color:red; margin:0 0;" > <?php echo $value['desc']; ?> </p> <hr /></td></tr>
    62 </tr>
    63 <?php } ?>
    64 <?php
    65 }
    66 ?>
    67 </table>
    68 <hr />
    69 <div>
    70 <input style="font-size:12px !important;" name="save" type="submit" value="保存设置" />
    71 <input type="hidden" name="action" value="save" />
    72 </div>
    73 </form>
    74 <form method="post">
    75 <div>
    76 <input style="font-size:12px !important;" name="reset" type="submit" value="还原默认设置" />
    77 <input type="hidden" name="action" value="reset" />
    78 </div>
    79 </form>
    80 </div>
    81 <?php
    82 }
    83 add_action('admin_menu', 'mytheme_add_admin');
    84 ?>

    添加完成后,把文件改名为settings.php,然后把settings.php这个文件上传到你的php虚拟主机相对主题的目录里,这样一来我们就建立出了主题的相应主题的控制选项功能了,这个只是一个简易的控制选项,还没有漂亮到跟专业主题的样式一样的效果,所以大家不要嫌弃,但是实现的功能是差不多的,我相信,这应该才是重点。
     
  2. vipeaksally

    vipeaksally New Member

    注册:
    2013-12-02
    帖子:
    15
    赞:
    0
    正找这个呢,谢LZ
     
  3. weitao183

    weitao183 New Member

    注册:
    2013-12-27
    帖子:
    5
    赞:
    0
    太好了学到了,,
     
  4. nk123

    nk123 New Member

    注册:
    2013-12-27
    帖子:
    145
    赞:
    0
    恩恩,不错的额样子哦!
     
  5. lunzuo

    lunzuo New Member

    注册:
    2012-09-28
    帖子:
    171
    赞:
    0
    学学 支持下、。。。。。。。。。。。