• wordpress CMS主题:ssmay主题wordpress CMS主题:ssmay主题
  • 首页 > wordpress CMS主题制作 > 用类来添加wordpressCMS主题设置页面(3):类文件后段——表单选项

    用类来添加wordpressCMS主题设置页面(3):类文件后段——表单选项

    作者: 分类:wordpress CMS主题制作 点击: 1,591 次
    wordpress CMS主题:ssmay主题

      上一章中,我们为wordpress主题设置页面添加了类文件的前台,本章我们接着为类文件添加后段代码——表单选项,这部分也是wordpressCMS主题设置页面的显示部分。

      第六步:添加初始化处理函数。

      function initialize() {
      $this->get_save_options();
      $this->display();
      }

      这个函数是数据处理函数,它调用了2个函数get_save_options()和display(),这2个函数我们在下面会创建。

      第七步:添加表单显示函数。

      //显示表单项函数
      function display() {
      $saveoption = false;
      echo '<div class="wrap">';
      echo '<div class="icon32" id="icon-options-general"><br/></div>';
      echo '<h2>'.$this->pageinfo['full_name'].'</h2>';
      echo '<form method="post" action="">';

      //根据选项类型执行对应函数
      foreach ($this->options as $option) {
      if (method_exists($this, $option['type'])) {
      $this->$option['type']($option);
      $saveoption = true;
      }
      }
      if($saveoption) {
      echo '<p class="submit">';
      echo '<input type="hidden" value="1" name="save_my_options"/>';
      echo '<input type="submit" name="Submit" class="button-primary autowidth" value="保存设置" /></p>';
      }
      echo '</form></div>';
      }

      上面的代码为wordpress主题设置页面添加显示,这里没有一个一个地添加表单选项同,而是根据选项类型执行对应的选项表单函数,这些表单函数在一面会一一创建。并且添加了设置页面的html标签。这样我们CSS就可以根据这些标签来设置样式。

      第八步:添加更新处理数据函数。

      //更新数据
      function get_save_options() {
      $options = $newoptions = get_option($this->saved_optionname);
      if ( isset( $_POST['save_my_options'] ) ) {
      echo '<div class="updated fade" id="message" style=""><p><strong>Settings saved.</strong></p></div>';
      $opion_count = 0;
      foreach ($_POST as $key => $value) {
      if( preg_match("/^(numbers_)/", $key, $result) ){
      $numbers = explode( ',', $value );
      $newoptions[$key] = $numbers;
      }elseif( preg_match("/^(tinymce_)/", $key, $result) ){
      $value = stripslashes($value);
      $newoptions[$key] = $value;
      }elseif( preg_match("/^(checkbox_)/", $key, $result) ){
      $newoptions[$key] = $value;
      }else{
      $value = stripslashes($value);
      $newoptions[$key] = htmlspecialchars($value, ENT_QUOTES,"UTF-8");
      }
      }
      }

      if ( $options != $newoptions ) {
      $options = $newoptions;
      update_option($this->saved_optionname, $options);
      }

      if($options) {
      foreach ($options as $key => $value) {
      $options[$key] = empty($options[$key]) ? false : $options[$key];
      }
      }

      $this->database_options = $options;
      }

      第九步:添加表格标签。

      //开头
      function open($values) {
      if(!isset($values['desc'])) $values['desc'] = "";

      echo '<table class="widefat">';
      echo '<thead><tr><th colspan="2">'.$values['desc'].'&nbsp;</th></tr></thead>';
      }

      //结尾
      function close($values) {
      echo '<tfoot><tr><th>&nbsp;</th><th>&nbsp;</th></tr></tfoot></table>';
      }

      添加表格,是为了更好的规范化表单显示,不过,也可以不添加表格。可以通过CSS来设置显示样式,这里是为了方便,就直接用了表格。

      第十步:添加表单选项函数。

      在第七步的表单显示函数中我们设置了根据选项类来调用相应的表单选项函数,在这里我们就来创建这些表单选项函数,这里我们将创建文本框、文本域、单选框、复选框、图片上传等经常用到的表单选项,代码如下:

      //文本域/
      function textarea($values) {
      if(isset($this->database_options[$values['id']]))
      $values['std'] = $this->database_options[$values['id']];
      echo '<tr valign="top" >';
      echo '<th scope="row" width="200px">'.$values['name'].'</th>';
      echo '<td>'.$values['desc'].'<br/>';
      echo '<textarea name="'.$values['id'].'" cols="60" rows="7" id="'.$values['id'].'" style="width: 80%; font-size: 12px;" class="code">';
      echo $values['std'].'</textarea><br/>';
      echo '<br/></td>';
      echo '</tr>';
      }

      //文本框/
      function text($values) {
      if(isset($this->database_options[$values['id']])) $values['std'] = $this->database_options[$values['id']];

      echo '<tr valign="top" >';
      echo '<th scope="row" width="200px">'.$values['name'].'</th>';
      echo '<td>'.$values['desc'].'<br/>';
      echo '<input type="text" size="'.$values['size'].'" value="'.$values['std'].'" id="'.$values['id'].'" name="'.$values['id'].'"/>';
      echo '<br/><br/></td>';
      echo '</tr>';
      }

      ///复选框/
      function checkbox($values) {
      if(isset($this->database_options[$values['id']])) $values['std'] = $this->database_options[$values['id']];
      echo '<tr valign="top">';
      echo '<th scope="row" width="200px">'.$values['name'].'</th>';
      echo '<td>'.$values['desc'].'<br/>';
      foreach( $values['buttons'] as $key=>$value ) {
      $checked ="";
      if( is_array($values['std']) && in_array($key,$values['std'])) {
      $checked = 'checked = "checked"';
      }
      echo '<input '.$checked.' type="checkbox" class="kcheck" value="'.$key.'" name="'.$values['id'].'[]"/>'.$value;
      }
      echo '<label for="'.$values['id'].'">'.$values['desc'].'</label><br/>';
      echo '<br/></td>';
      echo '</tr>';
      }

      //单选框/
      function radio($values) {
      if(isset($this->database_options[$values['id']])) $values['std'] = $this->database_options[$values['id']];
      echo '<tr valign="top" >';
      echo '<th scope="row" width="200px">'.$values['name'].'</th>';
      echo '<td>'.$values['desc'].'<br/>';
      foreach($values['buttons'] as $key=>$value) {
      $checked ="";
      if(isset($values['std']) && ($values['std'] == $key)) {
      $checked = 'checked = "checked"';
      }
      echo '<p><input '.$checked.' type="radio" class="kcheck" value="'.$key.'" name="'.$values['id'].'"/>';
      echo '<label for="'.$values['id'].'">'.$value.'</label></p>';
      }
      echo '<br/></td>';
      echo '</tr>';
      }

      //上传
      function upload($values) {
      $prevImg = '';
      if(isset($this->database_options[$values['id']])) $values['std'] = $this->database_options[$values['id']];
      if($values['std'] != ''){$prevImg = '<img src='.$values['std'].' alt="" />';}
      echo '<tr valign="top" >';
      echo '<th scope="row" width="200px">'.$values['name'].'</th>';
      echo '<td>';
      echo '<div class="preview_pic_optionspage" id="'.$values['id'].'_div">'.$prevImg.'</div>';
      echo $values['desc'].'<br/>';
      echo '<input type="text" size="60" value="'.$values['std'].'" name="'.$values['id'].'" class="upload_pic_input" />';
      echo '&nbsp;<a onclick="return false;" title="" class="k_hijack button thickbox" id="'.$values['id'].'" href="media-upload.php?type=image&amp;hijack_target='.$values['id'].'&amp;TB_iframe=true">Insert Image</a>';
      echo '<br/><br/></td>';
      echo '</tr>';
      }

       

      好了,到这里,我们就为wordpress主题设置页面就完整地添加了一个类文件。这里,我们只是创建了类,但是后台仍没有添加任何东西。我们只有调用了这个类,才有所作为。在下一章中,我们将介绍如何通过这个类来创建设置页面。

    文章作者:高时银博客
    本文地址:http://wanlimm.com/77201506264523.html
    本文时间:2015-06-26 11:15:21
    版权所有 © 转载时必须以链接形式注明作者和原始出处!

    上一篇:
    下一篇:
    wordpress CMS主题:ssmay主题

    或许你会感兴趣的文章:

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    This site uses Akismet to reduce spam. Learn how your comment data is processed.