wp_editor () -Felder auf der Seite mit den Themenoptionen werden nicht gespeichert

7

(Dies ist eine Art Follow-up zu dieser Frage .)

Ich kann die beiden WYSIWYG-Editoren auf meiner Seite mit Themenoptionen anzeigen, aber die Werte, die ich in die Editoren eingebe, werden nicht gespeichert. Ich habe gelesen eine Tonne von Sachen über die Einstellungen API und wp_editor () in der Hoffnung, so dass diese Arbeit in die meisten Wordpress freundliche Art und Weise. Ich habe das Gefühl, dass ich noch keine gute Erklärung dafür gefunden habe, wie man wp_editor()in Themeneinstellungen arbeitet und trotzdem ordnungsgemäß gemäß der Einstellungs-API speichert.

Ich habe das Gefühl, dass wp_editor()der Speichervorgang trotz der Aufrufe in den Rückrufen des entsprechenden Einstellungsfelds nicht erkennt, dass die Editoren gültigen Optionen zugeordnet sind.

Der relevante Code aus meinen Themenoptionen ist unten:

//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
}

BEARBEITEN: Im Moment verwende ich auch keinen Rückruf für meine Einstellungen. Ist das möglicherweise das Problem?

UPDATE: Rückruffunktion im Code hinzugefügt. Kein Unterschied.

mrwweb
quelle

Antworten:

9

Sie müssen Ihren Editoren ein Namensattribut hinzufügen. Das name-Attribut muss auf den Wert Ihrer Option gesetzt werden. Gehen Sie also folgendermaßen vor:

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')  );
}
Pippin
quelle
Großartig, gerne helfen.
Pippin
1
Danke Pippin! Ich habe Stunden damit verbracht, das herauszufinden. Ich kann nicht glauben, dass das alles war ...
Jeremiah Prummer