如何在插件页面中添加选项?

时间:2013-01-01 作者:user1692333

我找不到一个关于如何创建其他字段的或多或少清晰的示例,所以这里是否有人可以帮助我?这是我的代码:

function __construct(){
    add_action(\'admin_init\', array($this, \'plugin_admin_init\'));
}

public function create_fields(){
    register_setting(\'dleToWp_options\', \'database_name\');
    register_setting(\'dleToWp_options\', \'database_prefix\');
    register_setting(\'dleToWp_options\', \'version\');
    //Stuck here
    // add_settings_section(\'dleToWp_options\', __(\'Settings\', \'dleToWp\'), NULL, \'dleToWp\');
    // add_settings_field(\'plugin_text_string\', \'Plugin Text Input\', \'plugin_setting_string\', \'plugin\', \'dleToWp\');
}

public function settings_page(){

    echo \'<div class="wrap">
        <div class="icon32" id="icon-tools"></div>
        <h2>\'.__(\'Database converter\', \'dleToWp\').\'</h2>
        <form action="options.php" method="post">\';
    settings_fields(\'dleToWp_options\');
    do_settings_sections(\'dleToWp\');
    echo \'</form></div>\';
}
我需要创建3个字段:数据库名称、数据库前缀和版本选择框。

2 个回复
最合适的回答,由SO网友:Eugene Manuilov 整理而成

有很多事情你必须了解Settings API. 与其重复信息,我强烈建议您通读一系列名为The Complete Guide To The WordPress Settings API, 特别注意第二部分Sections, Fields, and Settings. 不要犹豫在文章中实现示例,它将帮助您更好地理解和记住它。

SO网友:Ed Burns

非常接近-但是在settings\\u page函数中,必须在settings\\u fields调用之后为每个字段添加html表单元素。并删除“do\\u settings\\u sections”行。提交按钮也是一个不错的补充。

以下是添加一个字段的示例:

?>
<table width="100%">
    <tr>
        <td>
            <label for="database_name" />Database Name</label>
            <input type="text" id ="database_name" size="50" name="database_name" value="<? echo get_option(\'database_name\')?>" /> 
        </td>
    </tr>
</table>
<p class="submit">
    <input type="submit" class="button-primary" value="Save Changes" />
</p>
<?php
---已更新---

也可以使用add\\u settings\\u部分和add\\u settings\\u fields调用,而不是如所述创建表单。这就是工作原理:

public function settings_page(){
    echo \'<div class="wrap">
    <div class="icon32" id="icon-tools"></div>
    <h2>\'.__(\'Database converter\', \'dleToWp\').\'</h2>
    <form action="options.php" method="post">\';
    settings_fields(\'dleToWp_options\');
    do_settings_sections(\'dleToWp\');
    <p class="submit"><input type="submit" class="button-primary" value="<?php _e(\'Save Changes\') ?>"  /></p>
    echo \'</form></div>\';
}
这与您在开始时提供的代码非常接近,只是现在添加了一个提交按钮。

在create\\u fields函数中,还需要定义设置和字段:

add_settings_section(\'dleToWp_options\', \'Plugin Options\', \'dleToWp_options_callback\', \'dleToWp\');
add_settings_field(\'dltToWp_database_name\', \'Database Name\', \'dleToWp_database_name_callback\', \'dleToWp\', \'dleToWp_options\');
请注意,每个调用都指定settings部分,add\\u settings\\u字段必须指向该部分。

最后,必须为节和字段创建回调:

function dleToWp_options_callback() {
    echo "<p>Description of this Section</p>"
}

function dleToWp_database_name_callback() {
    echo "<input type=\'text\' id=\'database_name\' size=\'50\' name=\'database_name\' value=\'".get_option(\'database_name\')."\' />";
}
您仍然需要为表单元素提供html。您还必须添加提交按钮html。

所有这些代码都是我脑子里想不出来的,所以不能保证它能正常工作。但它应该让您了解如何使用add\\u settings*函数以及如何构造回调。

结束

相关推荐

plugins_url vs plugin_dir_url

我看到WordPress插件在为一些文件夹创建常量时使用plugins\\u url或plugin\\u dir\\u url。一个比另一个好吗?示例:define( \'MEMBERS_URI\', trailingslashit( plugin_dir_url( __FILE__ ) ) ); define( \'WPACCESS_INC\', plugins_url( \'inc\', __FILE__ ) , true );