插件从管理面板页面获取价值

时间:2012-05-09 作者:lucky

如何从表单(表单位于管理面板页面)中获取值,并将这些值放入单独的变量中

<?php
    /*
        Plugin Name: calc plugin 
    */

    add_action(\'admin_menu\', \'my_plugin_menu\');

    function my_plugin_menu() {
        add_options_page(\'My Plugin Options\', \'My Plugin\', 8, \'your-unique-identifier\', \'my_plugin_options\');
    }

    function my_plugin_options() {
        echo \'<div class="wrap">\';
        echo \'<p>Enter Two locations </p>
              <form action="#" name="mapform" id="mapform">
                      Location A: <input type="text" name="A"><br />
                      Location B: <input type="text" name="B"><br />
                      <input type="submit" name="submit" value="Update">
              </form>\';
        echo \'</div>\';
    }
?>

2 个回复
SO网友:Stephen Harris

如果要添加设置页面(或向和现有设置页面添加选项),请使用settings api:

1。注册设置并添加分区:

add_action(\'admin_init\', \'plugin_admin_init\');
function plugin_admin_init(){
     register_setting( \'wpse51578_options_group\', \'my_option_field_name\', \'wpse51578_validation_callback\' );
     add_settings_section(\'wpse51578_main_id\', \'My Main Settings\', \'wpse51578_main_settings_cb\', \'wpse51578_option_page\');
}
The\'my_option_field_name\' 整型register_settings 选项字段应具有的名称:例如。

        <input type="text" name="my_option_field name[A]"><br />
        <input type="text" name="my_option_field name[B]"><br />
Theadd_settings_section 为页面注册设置部分。当然,您可以在一个页面上有多个部分。

2。输出表单元素wpse51578_main_settings_cb 中的回调函数add_settings_section 负责创建该节的输出。您可以输出其中的表单元素(或使用add_settings_field). No form tags should be used in this bit for this bit. 例如:

<?php
function wpse51578_main_settings_cb(){
      $my_options = get_option(\'wpse51578_options_group\',array());
      $A = ( isset($my_options[\'A\']) ? esc_html($my_options[\'A\']) : \'default-for-a\';
      $B = ( isset($my_options[\'B\']) ? esc_html($my_options[\'B\']) : \'default-for-b\';
  ?>
       Location A <input type="text" value="<?php echo $A; ?>" name="my_option_field name[A]"><br />
       Location B <input type="text" value="<?php echo $B; ?>" name="my_option_field name[B]"><br />
  <?php
}
?>

3。输出设置页面

添加页面时,定义了一个回调以输出页面内容。这就是该函数应该执行的操作(使用plugin_options_page 如果您在问题中给出:

<?php
function plugin_options_page() {
?>
  <h2>My custom plugin</h2>
   Options relating to the Custom Plugin.

    <form action="options.php" method="post">
        <?php settings_fields(\'wpse51578_options_group\'); ?>
        <?php do_settings_sections(\'wpse51578_option_page\'); ?>

        <input name="Submit" type="submit" value="<?php esc_attr_e(\'Save Changes\'); ?>" />
    </form>

<?php
}?>

4。验证现在WordPress在您的页面上执行临时检查,并(几乎)处理表单的所有处理。然而,它需要你做一件事-validate. 注册设置时,请指定验证回调函数:wpse51578_validation_callback 在本例中。

此函数将从输入名称所在的表单字段接收的值数组传递给my_option_field_name (注册设置时也是如此)。因此,例如,您可能希望使用以下数组:

 array(
     \'A\' => \'some-input\', //value for A
     \'B\' => \'some-input-for b\', //value for B
 );
它的工作是检查数组是否包含“正确”的值(这意味着什么取决于上下文:例如,如果它是一个电子邮件字段,那么该值实际上是一个电子邮件地址吗?)。这里不需要卫生设施(但在输出数据的地方也需要卫生设施)。

function wpse51578_validation_callback( $dirty ){
     //$dirty is what you receive from the form

     $clean = array();
     //Sanitize data and pass it to the $clean array

     return $clean;
 } 
其他资源:

关于使用设置API的最佳教程可能是:http://ottodestruct.com/blog/2009/wordpress-settings-api-tutorial/

请注意,我没有测试上述内容,但它在程序上是正确的,可能只是输入错误或小错误

SO网友:Rutwick Gangurde

使用init 处理已发布表单的操作。看到了吗codex for init 有关详细信息和示例。

编辑:

<?php
/*
 Plugin Name: calc plugin 
*/

add_action(\'admin_menu\', \'my_plugin_menu\');

function my_plugin_menu() {
    add_options_page(\'My Plugin Options\', \'My Plugin\', \'administrator\', \'your-unique-identifier\', \'my_plugin_options\');
}

function my_plugin_options() { ?>
    <div class="wrap">\';
        <p>Enter Two locations </p>
        <form name="mapform" id="mapform" method="post">
            Location A: <input type="text" name="A"><br />
            Location B: <input type="text" name="B"><br />
            <input type="submit" name="my_submit" value="Update">
        </form>
    </div>
<?php }

add_action(\'init\', \'my_plugin_handler\');
function my_plugin_handler(){
    if(isset($_POST[\'my_submit\'])){
        $val_a = $_POST[\'A\'];
        $val_b = $_POST[\'B\'];

        echo $val_a.\', \'.$val_b;
    }
}

结束

相关推荐

下一代画廊+画廊由John Brien Plugins提供

我已经安装了NextGen gallery插件(http://wordpress.org/extend/plugins/nextgen-gallery/) 还有John Brien的galleryview插件(http://wordpress.org/extend/plugins/wordpress-nextgen-galleryview/) 并想知道是否有人一起使用过这些插件。我已经在我的主图像下运行了一行缩略图,对此我很满意,但插件在缩略图的左右两侧添加了下一个和上一个箭头(请参见下图),我想去掉这些