Wordpress 使用设置 API 保存 wp_editor 内容
Wordpress save wp_editor content using settings API
我正在创建一个带有管理设置页面的插件,我想使用设置 API。
我可以保存文本字段和复选框,但是当我添加带有 wp_editor
的设置字段时,它没有保存..?
我以前用 get_option
来做到这一点,但现在我想使用设置 class 和 register_setting()
方法。
这是我的代码:
public function register_settings() {
register_setting( 'eman_setting', 'eman_setting', array( $this, 'eman_validate_settings' ) );
add_settings_field(
'eman_dashboard_welcome',
__( "", 'emanlang' ),
array( $this, 'eman_dashboard_welcome_callback' ),
'management-settings',
'eman_settings_section'
);
}
public function eman_dashboard_welcome_callback() {
//$content = 'Empty';
$editor_id = 'textareadashboardwelcome';
$args = array('textarea_name' => 'eman_dashboard_welcome');
if(! empty( $this->eman_setting['eman_dashboard_welcome'] ) ) {
$content = $this->eman_setting['eman_dashboard_welcome'];
} else {
$content = 'The field is empty';
}
wp_editor( $content, $editor_id, $args );
/** TESTING **/
echo '<br /><b>testing textarea output: </b>'. $content .'<br /><br />';
echo '<b>Complete settings array dump: </b><br />';
echo var_dump($this->eman_setting);
}
注意:这只是代码的相关部分。在这个页面上,我有多个 'add_settings_field' 都工作正常。
您可能已经注意到,为了进行测试,我执行了 var_dump()
来检查选项数组中的内容。
转储returns:
array(3) { ["eman_opt_in"]=> string(2) "on" ["eman_sample_text"]=> string(10) "sample 1.1" ["eman_sample_text2"]=> string(10) "sample 2.2" }
保存表格后,数组只包含 3 个字段,所以数组甚至没有填充 [eman_dashboard_welcome]?
我尝试了很多可能的解决方案,比如添加这个 jQuery:
$('#submit').mousedown( function() {
tinyMCE.triggerSave();
});
但没有任何效果...请帮忙 :-)
找到了..
解决方案:
Textarea / wp_editor 'name'需要调用数组中的字段
就我而言:
$args = array('textarea_name' => 'eman_setting[eman_dashboard_welcome]');
wp_editor( $content, $editor_id, $args );
我正在创建一个带有管理设置页面的插件,我想使用设置 API。
我可以保存文本字段和复选框,但是当我添加带有 wp_editor
的设置字段时,它没有保存..?
我以前用 get_option
来做到这一点,但现在我想使用设置 class 和 register_setting()
方法。
这是我的代码:
public function register_settings() {
register_setting( 'eman_setting', 'eman_setting', array( $this, 'eman_validate_settings' ) );
add_settings_field(
'eman_dashboard_welcome',
__( "", 'emanlang' ),
array( $this, 'eman_dashboard_welcome_callback' ),
'management-settings',
'eman_settings_section'
);
}
public function eman_dashboard_welcome_callback() {
//$content = 'Empty';
$editor_id = 'textareadashboardwelcome';
$args = array('textarea_name' => 'eman_dashboard_welcome');
if(! empty( $this->eman_setting['eman_dashboard_welcome'] ) ) {
$content = $this->eman_setting['eman_dashboard_welcome'];
} else {
$content = 'The field is empty';
}
wp_editor( $content, $editor_id, $args );
/** TESTING **/
echo '<br /><b>testing textarea output: </b>'. $content .'<br /><br />';
echo '<b>Complete settings array dump: </b><br />';
echo var_dump($this->eman_setting);
}
注意:这只是代码的相关部分。在这个页面上,我有多个 'add_settings_field' 都工作正常。
您可能已经注意到,为了进行测试,我执行了 var_dump()
来检查选项数组中的内容。
转储returns:
array(3) { ["eman_opt_in"]=> string(2) "on" ["eman_sample_text"]=> string(10) "sample 1.1" ["eman_sample_text2"]=> string(10) "sample 2.2" }
保存表格后,数组只包含 3 个字段,所以数组甚至没有填充 [eman_dashboard_welcome]?
我尝试了很多可能的解决方案,比如添加这个 jQuery:
$('#submit').mousedown( function() {
tinyMCE.triggerSave();
});
但没有任何效果...请帮忙 :-)
找到了..
解决方案:
Textarea / wp_editor 'name'需要调用数组中的字段
就我而言:
$args = array('textarea_name' => 'eman_setting[eman_dashboard_welcome]');
wp_editor( $content, $editor_id, $args );