問題描述

(這是一種 follow-up 到 this question 。)

我可以在主題選項頁面上顯示兩個 WYSIWYG 編輯器,但是我輸入編輯器的值不會被保存。我已經閲讀了大量關於 「設置」API 和 wp_editor() 的內容,希望通過 WordPress-friendly 的方式使其工作。我覺得我還沒有找到一個很好的解釋,如何使 wp_editor()在主題設置中工作,同時根據 Settings API 正常保存。

我感到,儘管 wp_editor()調用位於相關設置字段回調中,但保存過程並不意識到編輯器與有效選項相關聯。

我的主題選項的相關代碼如下:

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

編輯:現在,我還沒有在我的設置上使用回撥。這可能是問題嗎?

更新:在代碼中添加回調函數。沒有不同。

最佳解決方案

您需要向編輯器添加名稱屬性。 name 屬性需要設置為您的選項的值,如下所示:

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

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。