2016-02-18 3 views
4

Я просто занимаюсь разработкой плагинов в Wordpress. Прямо сейчас у меня есть функция, которую я передаю как фильтр в «tiny_mce_before_init» с определенными переменными, чтобы менять кнопки, добавлять пользовательские стили и другие подобные вещи.Wordpress tinyMCE Custom Plugin

Я нахожусь в процессе создания страницы параметров, которую я хотел бы контролировать переменными, переданными функции tinyMCE, таким образом, пользователь может выбрать, какие кнопки будут отображаться, а также добавить пользовательскую таблицу стилей в редактор ,

На данный момент моя функция редактирования крошечного mce отлично работает! и страница параметров также сохраняет данные, флажки и все остальное, что мне нужно.

Моя единственная проблема: я не понимаю, как передать переменные, хранящиеся в «options.php», в текущую функцию tinyMCE. Это текущая функция в моем файле functions.php:

function my_format_TinyMCE($in) { 
    //styles for the editor to provide better visual representation. 
    $in['content_css'] = get_template_directory_uri() . "/build/styles/tiny-mce-editor.css"; 
    $in['block_formats'] = "Paragraph=p; Heading 1=h1; Heading 2=h2"; 
    $in['toolbar1'] = 'formatselect,bold,italic,underline,superscript,bullist,numlist,alignleft,aligncenter,alignright,link,unlink,spellchecker'; 
    $in['toolbar2'] = ''; 
    $in['toolbar3'] = ''; 
    $in['toolbar4'] = ''; 
    return $in; 
} 
add_filter('tiny_mce_before_init', 'my_format_TinyMCE'); 

Я не хочу, чтобы свернутые пост, добавив весь код моего Параметры страницы, но я, возможно, потребуется какое-то направление, как подъехать Попутно переменные как значение $ in []. Как упоминалось ранее, переменные создавались на странице параметров и сохранялись, обновляя крошечную функцию mce.

Я много исследовал, и я не могу найти прямой информации об этом - как обычно, я не ищу, чтобы кто-то выполнял мой код, но, возможно, чтобы подтолкнуть меня в правильном направлении.

Спасибо!

РЕДАКТИРОВАНИЕ НОВЫЙ КОД

add_action('admin_menu', 'my_cool_plugin_create_menu'); 

function my_cool_plugin_create_menu() { 
    add_menu_page('My Cool Plugin Settings', 'Cool Settings', 'administrator', __FILE__, 'my_cool_plugin_settings_page' , plugins_url('/images/icon.png', __FILE__)); 
    add_action('admin_init', 'register_my_cool_plugin_settings'); 
} 

function register_my_cool_plugin_settings() { 
    //register our settings 
    register_setting('my-cool-plugin-settings-group', 'new_option_name'); 
} 

function my_cool_plugin_settings_page() { 
    ?> 
    <div class="wrap"> 
     <h2>Your Plugin Name</h2> 
     <form method="post" action="options.php"> 
      <?php settings_fields('my-cool-plugin-settings-group'); ?> 
      <?php do_settings_sections('my-cool-plugin-settings-group'); ?> 
      <table class="form-table"> 
       <tr valign="top"> 
        <th scope="row">New Option Name</th> 
        <td><input type="text" name="new_option_name" value="<?php echo esc_attr(get_option('new_option_name')); ?>" /></td> 
       </tr> 

      <?php submit_button(); ?> 
     </form> 
    </div> 
<?php } 

function my_format_TinyMCE($in) { 

    $toolbar = get_option('new_option_name'); 

    //styles for the editor to provide better visual representation. 
    $in['content_css'] = get_template_directory_uri() . "/build/styles/tiny-mce-editor.css"; 
    $in['block_formats'] = "Paragraph=p; Heading 1=h1; Heading 2=h2"; 
    $in['toolbar1'] = $toolbar; 
    $in['toolbar2'] = ''; 
    $in['toolbar3'] = ''; 
    $in['toolbar4'] = ''; 
    return $in; 
} 
    add_filter('tiny_mce_before_init', 'my_format_TinyMCE'); 
?> 

я все еще возникают трудности с доступом сохраненные переменные и использовать их в функции. Есть идеи?

+0

Сохраните их в таблице параметров, извлеките их в пределах фильтра. –

+0

Благодарим за быстрый ответ! Можете ли вы подробнее рассказать подробнее! Должен ли я использовать apply_filter()? Спасибо ! – mmarquez

ответ

0

На странице настроек вы можете сохранить параметры с помощью update_option. Затем в вашей функции my_format_TinyMCE вы можете получить к ним доступ с помощью get_option.

+0

Спасибо @Flyer - это подход, который имеет больше смысла, но я испытываю трудности с ним. Я обновляю свой код, чтобы показать полный контекст. Спасибо! – mmarquez

+0

@mmarquez Я думаю, что вы не создали должным образом материал с настройками. Обратитесь к [Настройки API] (https://developer.wordpress.org/plugins/settings/settings-api/) для получения информации и примеров –

+0

Проблема заключалась в использовании переменной $ variable = get_option(), но если я использую только get_option() как переменная, она отлично работает. Ваш ответ правильный, и ваша ссылка очень полезна. Спасибо! – mmarquez