在最近做的几款 WordPress 主题中,都集成了主题的后台控制选项,一方面是出于方便用户管理和操作的原因,另一方面是因为感觉作为一款收费主题,如果连个后台都没有,总好像缺点什么,所以经过这么多主题包括后台的制作,对后台控制面板的制作也有了一点心得。今天就举例说明如何给 WordPress 主题添加后台控制选项。
首先,在你的 WordPress 主题目录下新建一个 settings.php 文档,然后把以下代码粘贴进去:
<?php
$themename = “XXX主题”; //主题名称
$shortname = “jiuchuangzhuti”; //主题简写,必须是英文、数字、下划线组合
$options = array (
array(“name” => “这里是大标题”,”type” => “heading”,”desc” => “这里是描述信息”),
array(“name” => “这里是小标题”,”id” => $shortname.”_test”,”std” => “这里是默认值”,”type” => “text”)
);
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=settings.php&saved=true”); //这里的 settings.php 就是这个文件的名称
die;
} else if( ‘reset’ == $_REQUEST[‘action’] ) {
foreach ($options as $value) {
delete_option( $value[‘id’] );
update_option( $value[‘id’], $value[‘std’] );
}
header(“Location: themes.php?page=settings.php&reset=true”); //这里的 settings.php 就是这个文件的名称
die;
}
}
add_theme_page($themename.” Options”, “$themename 设置”, ‘edit_themes’, basename(__FILE__), ‘mytheme_admin’);
}
function mytheme_admin() {
global $themename, $shortname, $options;
if ( $_REQUEST[‘saved’] ) echo ‘<div id=”message”><p><strong>’.$themename.’ 设置已保存。</strong></p></div>’;
if ( $_REQUEST[‘reset’] ) echo ‘<div id=”message”><p><strong>’.$themename.’ 设置已重置。</strong></p></div>’;
?>
<style type=”text/css”>
th{text-align:left;}
input{width:100%;}
.submit{width:100px;padding:0;}
.defaultbutton{padding-left:745px;}
</style>
<div>
<h2><b><?php echo $themename; ?> 设置</b></h2>
<form method=”post”>
<div style=”padding:0;”>
<input style=”font-size:12px !important;” name=”save” type=”submit” value=”保存设置” />
<input type=”hidden” name=”action” value=”save” />
</div>
<table >
<?php foreach ($options as $value) {
if ($value[‘type’] == “text”) { ?>
<tr align=”left”>
<th scope=”row”><?php echo $value[‘name’]; ?>:</th>
<td>
<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″ />
</td>
</tr>
<?php } elseif ($value[‘type’] == “heading”) { ?>
<tr valign=”top”>
<td colspan=”2″ style=”text-align: left;”><hr />
<h2 style=”color:green;”><?php echo $value[‘name’]; ?></h2></td>
<tr><td colspan=2> <p style=”color:red; margin:0 0;” > <?php echo $value[‘desc’]; ?> </p> <hr /></td></tr>
</tr>
<?php } ?>
<?php
}
?>
</table>
<hr />
<div>
<input style=”font-size:12px !important;” name=”save” type=”submit” value=”保存设置” />
<input type=”hidden” name=”action” value=”save” />
</div>
</form>
<form method=”post”>
<div>
<input style=”font-size:12px !important;” name=”reset” type=”submit” value=”还原默认设置” />
<input type=”hidden” name=”action” value=”reset” />
</div>
</form>
</div>
<?php
}
add_action(‘admin_menu’, ‘mytheme_add_admin’);
?>
这样,一个超简易的后台就完成了,在 WordPress 后台左侧栏的控制面板 – 外观中可以看到多了一个设置选项。
接下来就是最后一步,调用主题后台的设置,在 WordPress 主题中需要的位置插入以下代码即可:
需要注意的是这个调用的格式,其中 jiuchuangzhuti 是刚才在 settings.php 中开头部分定义的主题简写,后面的 _test 则是在主题设置中定义的数组的 id 键。