web-dev-qa-db-ja.com

設定フィールドを表示できません

設定ページを持つプラグインは、その設定フィールドrma_base_urlをレンダリングしません。エラーは発生しません。ページは設定で作成され、見出しと送信ボタンがレンダリングされます。

コード:

add_action('admin_menu', 'remote_member_auth_menu');

function remote_member_auth_menu() {
    add_options_page('Remote Member Auth Options', 'Remote Member Auth', 'manage_options', 'rma', 'remote_member_auth_options');
}

function remote_member_auth_options() {
    if (!current_user_can('manage_options')) {
        wp_die(__('You do not have sufficient permissions to access this page.'));
    }
    echo '<div class="wrap">' .
        '<h3>Remote Member Authentication Settings</h3>' .
        '<form method="post" action="options.php">';
    settings_fields('rma_options');
    do_settings_sections('rma');
    submit_button('Set base url');
    echo '</form>' .
        '</div>';
}

function register_rma_settings() {
    register_setting('rma_options', 'rma_base_url');
    add_settings_field('rma_base_url', 'Base URL', 'rma_base_url_string', 'rma');
}

add_action('admin_init', 'register_rma_settings');

function rma_base_url_string() {
    $options = get_option('rma_options');
    echo "<input id='rma_base_url' name='rma_options[rma_base_url]' size='40' type='text' value='{$options['rma_base_url']}' />";
}

編集する

echo do_settings_sections('rma') ? 'something' : 'nothing';でフォームコードを修正するとnothingがレンダリングされるので、do_settings_sections('rma')は空です。 echo strlen(do_settings_sections('rma'))0をレンダリングします。

1
geoB

Echo do_settings_sections( 'rma')でフォームコードを修正しますか? '何か': '何も';何もレンダリングしないので、do_settings_sections( 'rma')は空です。

それを念頭に置いて、私はあなたがあなたのポストされたコードにセクションを追加するのを見ません。
あなたのregister_rma_settings()関数にセクションを追加し、それからこのセクションをあなたのadd_settings_field()に追加すると、入力は表示されます。

function register_rma_settings() {

    // add_settings_section( $id, $title, $callback, $page );
    // you can use $callback to add some descriptive text otherwise leave it blank, ''
    add_settings_section( 'rma_section', 'some title', 'section_description', 'rma' );

    register_setting('rma_options', 'rma_base_url');

    // we also added our new section id "rma_section" at last argument to the following function
    add_settings_field('rma_base_url', 'Base URL', 'rma_base_url_string', 'rma', 'rma_section');
}

セクションを使用したくない、または作成していないのはなぜですか?

更新
最初に私はあなたが必ずしもadd_settings_field()関数のセクションを定義する必要がないという印象も持っていました。
その関数についてのコーデックスを読むと、$section (string) (optional)のように、section引数はoptionalとして見えます。
BUTsectionを追加しなかった場合、引数にはdefaultが使用されることもわかります。

また、セクション引数として'default'を挿入してみましたが、設定が表示されません。 (他の設定ページにもありません)
セクション引数として''を挿入しようとしましたが、何も表示されません。

それでsectionは本当にオプションではないようです

0
LWS-Mo