web-dev-qa-db-fra.com

Impossible d'afficher le champ des paramètres

Un plugin avec une page de paramètres ne rend pas son champ de paramètres rma_base_url. Aucune erreur n'est jetée. La page est créée dans les paramètres, les en-têtes et les boutons d'envoi sont rendus.

Code:

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']}' />";
}

Modifier:

La modification du code de formulaire avec echo do_settings_sections('rma') ? 'something' : 'nothing'; rend nothing, donc do_settings_sections('rma') est vide. echo strlen(do_settings_sections('rma')) rend 0.

1
geoB

Modification du code de formulaire avec echo do_settings_sections ('rma')? "quelque chose": "rien"; ne rend rien, donc do_settings_sections ('rma') est vide.

Dans cet esprit, je ne vous vois pas ajouter une section dans votre code posté.
Si vous ajoutez une section à votre fonction register_rma_settings() et que vous ajoutez cette section à votre add_settings_field(), l'entrée s'affiche.

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');
}

Ne voulez-vous utiliser aucune section ou pourquoi vous n'en avez pas créé?

Mettre à jour
@ geoB Ouais d’abord, j’ai aussi l’impression que vous n’avez pas nécessairement besoin de définir une section dans la fonction add_settings_field().
Lorsque nous lisons le codex sur cette fonction, nous voyons l’argument section comme étant optional, comme $section (string) (optional)
MAIS nous pouvons également voir que si nous n’ajoutons pas une section, l’argument utilisera default.

J'ai également essayé d'insérer spécifiquement 'default' en tant qu'argument de section, mais le paramètre n'apparaîtra pas. (même pas sur d'autres pages de paramètres)
J'ai ensuite essayé d'insérer '' en tant qu'argument de section, mais rien ne s'affiche.

Donc semble que section n’est pas vraiment optionnel.

0
LWS-Mo