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