问题描述

(这是一种 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。