面向对象编程是现在编程语言中很重要的方法,很多程序语言都支持面向对象的编程方法,至于面向对象的概念、特点什么的,就不多说了,我们的后台设置选项如果设置数据非常多,按照前面的方法,需要些很多代码,当然你也可以使用各种自定义函数来简化代码,现在我们使用类来添加设置选项,在配置和修改的时候也非常简单。
我们先看一个简单一点的类 (参考自 NEOEASE):
第一步,新建 php 文件 (我还是使用前面教程中新建的 myfunctions.php 文件),我用默认主题 Twenty Ten 来测试,首先在这个主题的文件夹下新建一个文件-myfunctions.php 然后打开 functions.php 文件在最底部添加下面的代码载入我们新建的这个文件:
- include_once('myfunctions.php');
类的代码如下:
- <?php
- //类 ClassicOptions
- class ClassicOptions {
- /* -- getOptions 函数获取选项组 -- */
- function getOptions() {
- // 在数据库中获取选项组
- $options = get_option('classic_options');
- // 如果数据库中不存在该选项组, 设定这些选项的默认值, 并将它们插入数据库
- if (!is_array($options)) {
- //初始默认数据
- $options['ashu_copy_right'] = '阿树工作室';
- //这里可添加更多设置选项
- update_option('classic_options', $options);
- }
- // 返回选项组
- return $options;
- }
- /* -- init 函数 初始化 -- */
- function init() {
- // 如果是 POST 提交数据, 对数据进行限制, 并更新到数据库
- if(isset($_POST['classic_save'])) {
- // 获取选项组, 因为有可能只修改部分选项, 所以先整个拿下来再进行更改
- $options = ClassicOptions::getOptions();
- // 数据处理
- $options['ashu_copy_right'] = stripslashes($_POST['ashu_copy_right']);
- //在这追加其他选项的限制处理
- // 更新数据
- update_option('classic_options', $options);
- } else {
- // 否则, 重新获取选项组, 也就是对数据进行初始化
- ClassicOptions::getOptions();
- }
- //添加设置页面
- add_theme_page("主题设置", "主题设置", 'edit_themes', basename(__FILE__), array('ClassicOptions', 'display'));
- }
- /* -- 标签页 -- */
- function display() {
- $options = ClassicOptions::getOptions(); ?>
- <form method="post" enctype="multipart/form-data" name="classic_form" id="classic_form">
- <div class="wrap">
- <h2><?php _e('阿树工作室主题设置', 'classic'); ?></h2>
- <!-- 设置内容 -->
- <table class="form-table">
- <tbody>
- <tr valign="top">
- <td>
- <label>
- <input type="text" name="ashu_copy_right" value="<?php echo($options['ashu_copy_right']); ?>" size="20"/><?php _e('阿树工作室版权文字');?>
- </label>
- </td>
- </tr>
- </tbody>
- </table>
- <!-- TODO: 在这里追加其他选项内容 -->
- <p class="submit">
- <input type="submit" name="classic_save" value="<?php _e('保存设置'); ?>" />
- </p>
- </div>
- </form>
- <?php
- }
- }
- /*初始化,执行 ClassicOptions 类的 init 函数*/
- add_action('admin_menu', array('ClassicOptions', 'init'));
- ?>
类的解析:
其实这个类也很简单,第一步:通过 admin_menu 钩子执行类的 init 函数,而 init 函数代码很简单,就是处理和保存数据,添加一个设置页面,这两个代码前面的 教程都已经讲过。 display 函数更加简单,知识输出一个表单而已。 getOption 函数也就是获取选项的数据,如果没有数据就设置一个默认数据。
难点:admin_menu 钩子中,执行函数使用 array('类','函数') 这种形式,我们在后台教程二中提到过一次,还有 「类:: 函数」 这种新式的调用,可以参考 php 资料。