(これは この質問 へのフォローアップのようなものです。)
テーマオプションページに2つのWYSIWYGエディタを表示できますが、エディタに入力した値は保存されません。私は 設定API と wp_editor() について read a ton of stuff これは最もWordPressにやさしい方法で動作します。 Settings APIに従って正しく保存しながら、テーマ設定でwp_editor()
を機能させる方法については、まだ十分な説明がないようです。
wp_editor()
呼び出しが関連設定フィールドのコールバックに含まれているにもかかわらず、Saveプロセスはエディターが有効なオプションに関連付けられていることを認識していないように感じます。
私のテーマオプションの関連コードは以下のとおりです。
//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属性を追加する必要があります。 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') );
}