wordpress后台的选项的制作和保存

网站制作的时候,经常需要填写一些选项信息,比如联系方式、地址、电话等信息。如果后台增加了这个功能,那就很容易修改信息,不用每次都修改模板文件。下面就说说wordpress怎么制作这样的选型信息。

制作选项信息,需要了解怎么在后台增加一个菜单。可以看我之前的文章 wordpressh后台怎么外观增加一个子菜单

下面就是一个添加选项的一个示例, 作用是向数据库options表,写入一条数据,或者是更新一条数据。存在就更新,否则就写入一条数据。
需要用的一个函数就是 update_option, 用来更新或者新增一个条数据记录。

//  如果是 POST提交,并且是提交了选项就写入数据库
if( strtoupper($_SERVER['REQUEST_METHOD']) == "POST" 
    && $_POST['wp_option_save'] == 'true' ) {
    update_option('wp_option_test', $_POST['wp_option_test']);
}

function wz_add_sub_menu() {
    add_theme_page('title标题的内容', 
        '子菜单的名字',
        'administrator',
        'test', 'wz_show');
}

function wz_show() {
    ?>
    <h1>这是设置页面</h1>

    <form method="post" name="ashu_form" id="ashu_form">   
        测试: <input type="text" name="wp_option_test" 
                    value="<?php echo get_option('wp_option_test'); ?>" />

        <input type="hidden" name="wp_option_save" value="true" />
        <input type="submit"  value="更新" />    
    </form> 


    <?php
}

add_action('admin_menu', 'wz_add_sub_menu');

代码的执行过程

默认一次显示这个页面的时候,是get请求,所以这部分代码不执行

if( strtoupper($_SERVER['REQUEST_METHOD']) == "POST"  
        && $_POST['wp_option_save'] == 'true' ) {
    update_option('wp_option_test', $_POST['wp_option_test']);
}

仅显示了一个form的表单。
点击提交后, 就是一个 POST 请求, 然后就执行 update_option

代码的改进

这样代码点击提交后,虽然预期的效果有了,但是没有任何提示信息。好的习惯应该是给出个,操作的结果提示,不管是操作是成功或者是失败。修改提示的方法也和简单。利用函数 update_option 的返回值。完整的示例。

if( strtoupper($_SERVER['REQUEST_METHOD']) == "POST" 
        && $_POST['wp_option_save'] == 'true' ) {

     if( update_option('wp_option_test', $_POST['wp_option_test']) ) {
             $msg = "操作成功";
         } else {
             $msg = "操作失败";
         }
}

function wz_add_sub_menu() {
    add_theme_page('title标题的内容',
        '子菜单的名字',
        'administrator',
        'test',
        'wz_show');
}

function wz_show() {
    ?>

        <!-- 增加的代码 -->
        <?php
            if(isset($msg)) {
                echo '<div class="info">' . $msg . '</div>';
            }
        ?>

    <h1>这是设置页面</h1>

    <form method="post" name="ashu_form" id="ashu_form">   
        测试: <input type="text" name="wp_option_test"
                    value="<?php echo get_option('wp_option_test'); ?>" />
        <input type="hidden" name="wp_option_save" value="true" />
        <input type="submit"  value="更新" />    
    </form> 

    <?php
}

add_action('admin_menu', 'wz_add_sub_menu');