web-dev-qa-db-fra.com

les champs wp_editor () de la page des options de thème ne sont pas enregistrés

(Ceci est une sorte de suivi de cette question .)

Je peux afficher les deux éditeurs WYSIWYG sur ma page d'options de thème, mais les valeurs que je saisis dans les éditeurs ne sont pas enregistrées. J'ai lu a ton sur des choses sur l'API Paramètres et wp_editor () dans l'espoir que cela fonctionne de la manière la plus conviviale pour WordPress. Je pense que je n'ai pas encore trouvé de bonne explication sur la façon de faire fonctionner wp_editor() dans les paramètres de thème tout en enregistrant correctement conformément à l'API de configuration.

J'ai l'impression que, malgré les appels wp_editor() figurant dans les rappels de champ des paramètres appropriés, le processus de sauvegarde ne réalise pas que les éditeurs sont associés à des options valides.

Le code correspondant à mes options de thème est ci-dessous:

//register settings
add_action( 'admin_init', 'us_register_settings' );
function us_register_settings() {
    add_settings_section( 'us_settings', 'Settings', 'us_settings_section_cb', 'us_options' );
    register_setting( 'us_settings', 'us_authors_desc', 'us_sanitize_wysiwyg' );
    register_setting( 'us_settings', 'us_partners_desc', 'us_sanitize_wysiwyg' );
    add_settings_field( 'us_authors_desc', 'Author Archives Descriptions', 'us_authors_cb', 'us_options', 'us_settings' );
    add_settings_field( 'us_partners_desc', 'Partners Archives Descriptions', 'us_partners_cb', 'us_options', 'us_settings' );
}

function us_settings_section_cb() {
    // no need for text here right now
}

function us_authors_cb() {
    $us_author_desc = get_option( 'us_authors_desc' );
    echo wp_editor( $us_author_desc, 'usauthorsdesc' );
}

function us_partners_cb() {
    $us_partners_desc = get_option( 'us_partners_desc' );
    echo wp_editor( $us_partners_desc, 'uspartnersdesc' );
}

function us_sanitize_wysiwyg( $input ) {
    return $input;
}

function us_options_page() {
?>

<div class="wrap">

    <h2>Options</h2>

    <form method="post" action="options.php">

    <?php
    settings_fields( 'us_settings' );
    do_settings_sections( 'us_options' );
    ?>

    <input name="Submit" class="button-primary" type="submit" value="<?php esc_attr_e('Save Changes'); ?>" />

    </form>

</div>

<?php
}

EDIT: À l'heure actuelle, je n'utilise pas non plus de rappel sur mes paramètres. Est-ce que c'est peut-être le problème?

UPDATE: Ajout de la fonction de rappel dans le code. Aucune différence.

7
mrwweb

Vous devez ajouter un attribut de nom à vos éditeurs. L'attribut name doit être défini sur la valeur de votre option, ainsi:

function us_partners_cb() {
    $us_partners_desc = get_option( 'us_partners_desc' );
    echo wp_editor( $us_partners_desc, 'uspartnersdesc', array('textarea_name' => 'us_partners_desc')  );
}
8
Pippin