设置API-更改ADD_SETTINGS_FIELD()输出?

时间:2012-02-08 作者:Wordpressor

我正在使用Settings API 想知道是否有任何方法可以编辑add_settings_field() 作用

add_settings_field(\'the_field\', \'bar\', \'foo\', \'page\', \'section\');      

function foo() {
    echo \'foo\';
}
输出:

<table class="form-table">
  <tr valign="top">
    <th scope="row">bar</th>
    <td>foo</td>
    </tr>
如何去掉这些表标记并用其他标记替换它们?

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

如果你看do_settings_fields() (第1125行,/wp-admin/includes/template.php), 您可以看到,表格信息已硬编码到设置API中。如果不想使用该表,则需要开发自己的设置功能。

SO网友:NewEXE

我的自定义函数:

/**
 * Prints out one specified field from settings section.
 *
 * Based on:
 * @see do_settings_sections
 * 
 * @global array $wp_settings_sections  Storage array of all settings sections added to admin pages
 * @global array $wp_settings_fields    Storage array of settings fields and info about their pages/sections
 *
 * @param string $page                  The slug name of the page whose settings sections you want to output
 * @param string $field_id              Field ID for output
 */
public static function do_settings_section_field($page, $field_id) {
    global $wp_settings_sections, $wp_settings_fields;

    if ( ! isset( $wp_settings_sections[$page] ) )
        return;

    foreach ( (array) $wp_settings_sections[$page] as $section ) {

        if ( $section[\'callback\'] )
            call_user_func( $section[\'callback\'], $section );

        if ( ! isset( $wp_settings_fields[$page][$section[\'id\']] ) )
            continue;

        foreach ( (array) $wp_settings_fields[$page][$section[\'id\']] as $field ) {
            if ( $field[\'id\'] !== $field_id )
                continue;

            call_user_func($field[\'callback\'], $field[\'args\']);
        }
    }
}
您可以使用此函数代替do_settings_sections(), 具有与第二个参数相同的第一个参数和渲染字段ID。

结束

相关推荐

如果自定义管理页面未挂钩到ADD_OPTIONS_PAGE(),则不会显示设置API已更新消息

一直在使用设置API,发现只有通过add\\u options\\u page()将设置页面连接到WordPress菜单时,才会显示消息(用于成功或错误)。其他任何操作都不起作用,例如add\\u dashboard\\u page()。想知道这是不是真的?我尝试使用的示例代码是包含“RegisteredSettingsTest”类的答案Where to hook register_settings for Settings API when also want to update options out