設定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>
どのようにこれらのテーブルタグを取り除き、他のものに置き換えるか?
do_settings_fields()
(1125行目、/wp-admin/includes/template.php
)を見ると、テーブル情報が設定APIにハードコードされていることがわかります。テーブルを使用したくない場合は、独自の設定機能を開発する必要があります。
このための私のカスタム関数:
/**
* 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を第二引数として使います。