更改设置API的显示(DO_SETTINGS_SECTIONS)

时间:2011-11-13 作者:amellie

我正在开发一个使用Wordpress设置API的插件。我注意到do_settings_sections (和do_settings_fields) 使用表格显示字段。如何更改其格式?(我想使用DIV而不是TABLE)

1 个回复
最合适的回答,由SO网友:Johannes Pille 整理而成

没有hooks 修改的输出do_settings_sections().

因此,您唯一的选择是编写自定义版本的函数do_settings_sections()do_settings_fields(). 它们位于/wp-admin/includes/template.php, 第1159-1174行和第1190-1207行(wordpress版本3.2.1)(do not 在此处修改)。

您可以在您的插件中包含类似的内容(不是说这一定是可取的,请考虑与wp未来版本的兼容性):

function custom_do_settings_sections($page) {
    global $wp_settings_sections, $wp_settings_fields;

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

    foreach( (array) $wp_settings_sections[$page] as $section ) {
        echo "<h3>{$section[\'title\']}</h3>\\n";
        call_user_func($section[\'callback\'], $section);
        if ( !isset($wp_settings_fields) ||
             !isset($wp_settings_fields[$page]) ||
             !isset($wp_settings_fields[$page][$section[\'id\']]) )
                continue;
        echo \'<div class="settings-form-wrapper">\';
        custom_do_settings_fields($page, $section[\'id\']);
        echo \'</div>\';
    }
}

function custom_do_settings_fields($page, $section) {
    global $wp_settings_fields;

    if ( !isset($wp_settings_fields) ||
         !isset($wp_settings_fields[$page]) ||
         !isset($wp_settings_fields[$page][$section]) )
        return;

    foreach ( (array) $wp_settings_fields[$page][$section] as $field ) {
        echo \'<div class="settings-form-row">\';
        if ( !empty($field[\'args\'][\'label_for\']) )
            echo \'<p><label for="\' . $field[\'args\'][\'label_for\'] . \'">\' .
                $field[\'title\'] . \'</label><br />\';
        else
            echo \'<p>\' . $field[\'title\'] . \'<br />\';
        call_user_func($field[\'callback\'], $field[\'args\']);
        echo \'</p></div>\';
    }
}

结束

相关推荐

Can plugins become obsolete?

我认为WordPress插件是由第三方制作的。插件是否必须与WordPress升级保持同步?插件会过时吗?如果它们确实过时了,比如Linkedin共享按钮、推特推特按钮和类似Facebook的按钮的插件,切换到不同的插件会导致喜欢/推特/共享的数量丢失吗?如果插件可能会过时,那么它会发生吗?或者插件通常是最新的?或者他们是开源的,所以其他人会让他们保持最新?(正如你可能猜到的,我不是程序员。)