web-dev-qa-db-ja.com

設定API - add_settings_field()の出力を変更しますか?

設定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>

どのようにこれらのテーブルタグを取り除き、他のものに置き換えるか?

5
Wordpressor

do_settings_fields()(1125行目、/wp-admin/includes/template.php)を見ると、テーブル情報が設定APIにハードコードされていることがわかります。テーブルを使用したくない場合は、独自の設定機能を開発する必要があります。

5
mor7ifer

このための私のカスタム関数:

/**
 * 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を第二引数として使います。

0
NewEXE