wordpress后台制作教程(六):设置数据的保存

上一篇教程中,我们添加了简单的设置选项,数据的保存我们是直接提交到wp-admin/options.php中的,对于数据的保存我们还可以使用一个专用的函数update_option(),准确的说这个函数是更新设置选项数据的。这一篇教程还是比较重要的,因为我们后面将的教程中,都是使用update_option这个函数来保存、更新设置数据的。

函数用法如下:

  1. <?php   
  2. update_option( $option$newvalue );   
  3. //$option为选项名称   
  4. //newvalue为选项的值   
  5. ?>  

实例:我们使用上一篇教程的代码,(前面我们已经在默认的Twenty Ten主题中新建一个myfuntions.php ,然后在functions.php文件中include新文件),打开myfunctions.php文件,去掉三个隐藏表单,去掉表单的的提交地址,也就是form标签中的action属性,之后代码如下:

  1. <?php      
  2. function test_function(){   
  3.     add_theme_page( '阿树工作室', '阿树工作室', 'administrator', 'ashu_slug','display_function');   
  4. }   
  5. add_action('admin_menu', 'test_function');   
  6.   
  7. function display_function(){ ?>   
  8.     <form method="post" name="ashu_form" id="ashu_form">   
  9.     <h2>阿树工作室主题设置</h2>   
  10.     <p>   
  11.     <label>   
  12.     <input name="ashu_copy_right" size="40" value="<?php echo get_option('ashu_copy_right'); ?>"/>   
  13.     请输入文字   
  14.     </label>   
  15.     </p>   
  16.     <p class="submit">   
  17.         <input type="submit" name="option_save" value="<?php _e('保存设置'); ?>" />   
  18.     </p>    
  19.     </form>   
  20.        
  21. <?php } ?>  

下面我们在文件顶部再添加处理数据的代码:

  1. <?php   
  2. $option = get_option('ashu_copy_right');//获取选项   
  3. if$option == '' ){   
  4.     //设置默认数据   
  5.     $option = '阿树工作室';   
  6.     update_option('ashu_copy_right', $option);//更新选项   
  7. }   
  8. if(isset($_POST['option_save'])){   
  9.     //处理数据   
  10.     $option = stripslashes($_POST['ashu_copy_right']);   
  11.     update_option('ashu_copy_right', $option);//更新选项   
  12. }   
  13.   
  14. ?>  

注意:我们这里的例子只有一个设置选项,如果表单中提交了多个数据,可将数据放进一个数组中,这样获取数据的时候只需使用一次get_option函数即可,更新数据也只需要使用一次update_option函数,还有,这一篇文章的方法并不是可取的,如果你只有少量的数据,可以使用上一篇教程中的方法。

下面是myfunctions.php中的所有代码:

  1. <?php   
  2. $option = get_option('ashu_copy_right');//获取选项   
  3. if$option == '' ){   
  4.     //设置默认数据   
  5.     $option = '默认数据';   
  6.     update_option('ashu_copy_right', $option);//更新选项   
  7. }   
  8. if(isset($_POST['option_save'])){   
  9.     //处理数据   
  10.     $option = stripslashes($_POST['ashu_copy_right']);   
  11.     update_option('ashu_copy_right', $option);//更新选项   
  12. }   
  13.   
  14. ?>   
  15.   
  16. <?php      
  17. function test_function(){   
  18.     add_theme_page( '阿树工作室', '阿树工作室', 'administrator', 'ashu_slug','display_function');   
  19. }   
  20. add_action('admin_menu', 'test_function');   
  21.   
  22. function display_function(){ ?>   
  23.     <form method="post" name="ashu_form" id="ashu_form">   
  24.     <h2>阿树工作室主题设置</h2>   
  25.     <p>   
  26.     <label>   
  27.     <input name="ashu_copy_right" size="40" value="<?php echo get_option('ashu_copy_right'); ?>"/>   
  28.     请输入文字   
  29.     </label>   
  30.     </p>   
  31.     <p class="submit">   
  32.         <input type="submit" name="option_save" value="<?php _e('保存设置'); ?>" />   
  33.     </p>    
  34.     </form>   
  35.        
  36. <?php } ?>  

已有13条评论

  1. 凱
    : 回复

    請問我在資料庫並無看到所新增資料 但一切都正常存取

  2. E世博体育
    E世博体育 : 回复

    我的后台出现了报错876 要怎么处理呢。

    Warning: Cannot modify header information – headers already sent
    by (output started at /www/web/365xia8_com/public_html/wp-config.php:1)
    in /www/web/365xia8_com/public_html/wp-includes/pluggable.php on line 876

  3. 晓晓
    晓晓 : 回复

    能否请问下,这个是对wordpress数据库已有的表更新数据,那么我自己在wordpress数据库中新建了一个表,想要向这个表中保存数据的话应该怎么写呢?或者说应该使用哪个钩子呢?

    • 阿树工作室
      阿树工作室 回复晓晓: 回复

      那你需要自己写写入和更新等函数。。。不过设置数据一般都不是很多,重新弄一个数据表不是很合适

      • 晓晓
        晓晓 回复阿树工作室: 回复

        额,那个数据只能独自存在,重新写入的话是不是很复杂?需要以插件形式写入啊?你能不能发表一篇类似这样功能的代码啊?

  4. 黑白
    黑白 : 回复

    我传到网上出现

    Warning: Cannot modify header information – headers already sent by
    (output started at
    C:\Inetpub\wwwroot\gylib\wp-content\themes\20130513\myfunctions.php:14) in C:\Inetpub\wwwroot\gylib\wp-includes\pluggable.php on line 876,是怎么回事,在本地测试的时候没有问题

    • 17itshare
      17itshare 回复黑白: 回复

      更改myfunctions的编码格式就好了改为utf-8 bom

    • 阿树工作室
      阿树工作室 回复黑白: 回复

      如果你是打算使用的话,请直接下载本工作室提供的设置选项类文件。。。wordpress后台制作教程-设置选项类文件

      如果你是学习的话,请自行分析错误哦

  5. laoan
    laoan : 回复

    “这一篇文章的方法并不是可取的”,为什么呀?

    • 阿树工作室
      阿树工作室 回复laoan: 回复

      其实也是可以用的,只不过我认为,如果将多个设置数据保存在一个数组中,可以减少数据库查询。所以这个能用,但是有更好的代码

  6. xuefeng3600
    xuefeng3600 : 回复

    写的很好,很详细!优秀的文章~赞一个!学习了~希望多多出些类似后台修改的文章!

    • 阿树工作室
      阿树工作室 回复xuefeng3600: 回复

      多谢支持。。慢慢写吧。。每写一篇都需要精力的,而且要尽量成系列。。

  7. Debra
    Debra : 回复

    That’s way the bestest asnewr so far!

发表评论