2015-04-22 4 views
1

Я создаю плагин с страницей параметров администратора, и я хочу использовать API настроек.Wordpress save wp_editor content using settings API

Я могу сохранить текстовые поля и флажки, но когда я добавляю поле настроек с wp_editor, это не экономит ..?

Я использовал это с get_option, но теперь я хочу использовать класс настроек и метод 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(), чтобы проверить, что находится внутри массива параметров.

Отдача свалка:

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(); 
}); 

Но ничего не работает ... Пожалуйста, помогите :-)

ответ

1

Нашел ..

Решение:

Textarea/wp_editor 'name' должно вызывать поле в массиве.

В моем случае:

$args = array('textarea_name' => 'eman_setting[eman_dashboard_welcome]'); 
wp_editor($content, $editor_id, $args); 
Смежные вопросы