問題描述
(這是一種 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。