当前位置:首页 > 转自点点  >> WP主题技巧: 为主题添加管理选项
06日

WP主题技巧: 为主题添加管理选项

作者:皇家元林 时间:2010年10月06日 围观者: 487 人 【0条评论】

过去一年, 我先后发布了 Elegant Box 和 Block 两个 WordPress 主题. 对于主题的制作虽不如老手, 但在完善的过程中对主题灵活性的要求却是体会颇深.
用户对界面的要求是各不相同的, 一个主题做下来就一个样是不能满足用户的. 他们会改你的主题 (烧刻的 Feed 地址也得改上去吧), 并向你提出各种问题直到你应接不暇.
对用户来说, 页面上的一些东西可能会常变的 (比如: 公告). 作为主题制作者应该考虑到这样的一些问题并灵活处理, 以免用户频繁的修改代码.
为此, 我们可以为主题添加一些管理选项, 用户可以在后台通过修改这些选项的值令主题有不一样的表现.
为主题添加一些管理选项并不是难事, 你只要回写完第一个选项处理, 其他选项的处理就迎刃而解了.
我们这次用 WordPress 自带的主题 classic 作为例子, 创建一个首页公告栏的管理选项.
本教程需要一定的 HTML 基础, 并对 PHP 有初步了解.
好, 我们这就说说怎么处理.

后台处理

首先, 我们要修改 function.php, 主要的处理工作都在这个文件里面, 如果主题没有这个文件, 就创建一个吧. (没有 function.php 说明主题不支持 Widget, 可不是一个好习惯哦, 还是赶紧新建一个吧, 想让主题支持 Widget 可以看看这里: 让主题支持 Widget)
我的处理包括 3 大块: 获取选项, 初始化, 标签页操作界面. 我这里只创建一个公告栏, 包括两个选项 (是否显示公告栏和公告栏内容). 如果要添加更多选项, 也只需要代码中 3 个 TODO 的位置上追加一些代码而已. 当然, 你还需要改一下选项名称, 将 Classic 和 classic 全部之换掉.
我已经在代码中标注了大量注释, 下面看看代码吧.

 
/**
 * 选项组类型
 */
class ClassicOptions {
 
	/* -- 获取选项组 -- */
	function getOptions() {
		// 在数据库中获取选项组
		$options = get_option('classic_options');
		// 如果数据库中不存在该选项组, 设定这些选项的默认值, 并将它们插入数据库
		if (!is_array($options)) {
			$options['notice'] = false;
			$options['notice_content'] = '';
			// TODO: 在这里追加其他选项
			update_option('classic_options', $options);
		}
		// 返回选项组
		return $options;
	}
 
	/* -- 初始化 -- */
	function init() {
		// 如果是 POST 提交数据, 对数据进行限制, 并更新到数据库
		if(isset($_POST['classic_save'])) {
			// 获取选项组, 因为有可能只修改部分选项, 所以先整个拿下来再进行更改
			$options = ClassicOptions::getOptions();
 
			// 数据限制
			if ($_POST['notice']) {
				$options['notice'] = (bool)true;
			} else {
				$options['notice'] = (bool)false;
			}
			$options['notice_content'] = stripslashes($_POST['notice_content']);
 
			// TODO: 在这追加其他选项的限制处理
 
			// 更新数据
			update_option('classic_options', $options);
 
		// 否则, 重新获取选项组, 也就是对数据进行初始化
		} else {
			ClassicOptions::getOptions();
		}
 
		// 在后台 Design 页面追加一个标签页, 叫 Current Theme Options
		add_theme_page("Current Theme Options", "Current Theme Options", 'edit_themes', basename(__FILE__), array('ClassicOptions', 'display'));
	}
 
	/* -- 标签页 -- */
	function display() {
		$options = ClassicOptions::getOptions();
?>
 

	
		

/>

} } /** * 登记初始化方法 */ add_action('admin_menu', array('ClassicOptions', 'init')); ?>

前台处理:

要公告栏在首页上显示, 需要修改一下 index.php, 这个比较简单, 只是通过一些判断语句决定东西要不要显示出来而已. 当然, 你可以进行其他操作, 关键是获取到选项的值, 并对它们进行处理.
其实可以分为两步:
1. 获取选项 (对每个 PHP 文件, 获取一次就行了, 可以在文件顶部执行)
2. 对选项进行处理 (这里判断成立的话就将公告内容显示出来)


转自http://www.neoease.com/add-options-to-your-wordpress-theme/

标签:, , , ,

Leave a Reply



1323